从自管理的 ClickHouse 迁移到 ClickHouse Cloud

本指南将展示如何从自管理的 ClickHouse 服务器迁移到 ClickHouse Cloud,以及如何在 ClickHouse Cloud 服务之间迁移。 remoteSecure
函数在 SELECT
和 INSERT
查询中使用,以允许访问远程 ClickHouse 服务器,这使得迁移表变得简单,只需编写一个嵌入 SELECT
的 INSERT INTO
查询。
从自管理的 ClickHouse 迁移到 ClickHouse Cloud

无论源表是否经过分片和/或复制,在 ClickHouse Cloud 上,您只需创建一个目标表(您可以省略此表的 Engine 参数,它将自动为 ReplicatedMergeTree 表), ClickHouse Cloud 将自动处理纵向和横向扩展。您无需考虑如何复制和分片表。
在这个例子中,自管理的 ClickHouse 服务器是 源,ClickHouse Cloud 服务是 目标。
概述
整个过程是:
- 向源服务添加只读用户
- 在目标服务上复制源表结构
- 从源拉取数据到目标,或根据源的网络可用性将数据从源推送到目标
- 从目标的 IP 访问列表中移除源服务器(如适用)
- 从源服务中删除只读用户
从一个系统迁移表到另一个系统:
此示例将一个表从自管理的 ClickHouse 服务器迁移到 ClickHouse Cloud。
在源 ClickHouse 系统上(当前托管数据的系统)
- 添加一个可以读取源表(本例中为
db.table
)的只读用户
- 复制表定义
在目标 ClickHouse Cloud 系统上:
- 创建目标数据库:
- 使用源的 CREATE TABLE 语句创建目标表。
运行 CREATE 语句时,将 ENGINE 更改为不带任何参数的 ReplicatedMergeTree。ClickHouse Cloud 始终复制表并提供正确的参数。请保留 ORDER BY
、PRIMARY KEY
、PARTITION BY
、SAMPLE BY
、TTL
和 SETTINGS
子句。
- 使用
remoteSecure
函数从自管理的源拉取数据

如果源系统无法从外部网络访问,您可以推送数据而不是拉取数据,因为 remoteSecure
函数适用于选择和插入。 查看下一个选项。
- 使用
remoteSecure
函数将数据推送到 ClickHouse Cloud 服务

为了让 remoteSecure
函数连接到您的 ClickHouse Cloud 服务,远程系统的 IP 地址需要在 IP 访问列表中被允许。有关更多信息,请展开此提示下的 管理您的 IP 访问列表。
管理您的 IP 访问列表
从您的 ClickHouse Cloud 服务列表中选择您将要使用的服务,并切换到 设置。如果 IP 访问列表中不包含需要连接到您的 ClickHouse Cloud 服务的远程系统的 IP 地址或范围,则可以通过 添加 IP 来解决此问题:

添加需要连接到您的 ClickHouse Cloud 服务的单个 IP 地址或地址范围。根据需要修改表单,然后 保存。

在 ClickHouse Cloud 服务之间迁移

在 ClickHouse Cloud 服务之间迁移数据的一些示例用途:
- 从恢复的备份迁移数据
- 从开发服务复制数据到暂存服务(或从暂存到生产)
在这个例子中,有两个 ClickHouse Cloud 服务,将分别称为 源 和 目标。数据将从源拉取到目标。尽管您可以选择推送数据,但示例中展示的是拉取,因为它使用了只读用户。

迁移过程包含以下几个步骤:
- 确定一个 ClickHouse Cloud 服务作为 源,另一个作为 目标
- 向源服务添加只读用户
- 在目标服务上复制源表结构
- 临时允许源服务的 IP 访问
- 从源复制数据到目标
- 在目标上重新建立 IP 访问列表
- 从源服务中删除只读用户
向源服务添加只读用户
- 添加一个可以读取源表(本例中为
db.table
)的只读用户
- 复制表定义
在目标服务上复制表结构
如果目标中尚不存在数据库,则创建该数据库:
- 创建目标数据库:
-
使用源的 CREATE TABLE 语句创建目标。
在目标上使用源中的
select create_table_query...
输出创建表:
允许源服务的远程访问
为了从源向目标拉取数据,源服务必须允许连接。临时禁用源服务上的 "IP 访问列表" 功能。
如果您将继续使用源 ClickHouse Cloud 服务,则在切换到允许从任何地方访问之前,将现有的 IP 访问列表导出到 JSON 文件;这将允许您在数据迁移完成后导入访问列表。
修改允许列表,临时允许 任何地方 的访问。有关详细信息,请参见 IP 访问列表 文档。
从源复制数据到目标
- 使用
remoteSecure
函数从源 ClickHouse Cloud 服务拉取数据 连接到目标。在目标 ClickHouse Cloud 服务上运行此命令:
- 验证目标服务中的数据
在源上重新建立 IP 访问列表
如果您之前导出了访问列表,则可以通过 共享 重新导入它,否则重新添加您的条目到访问列表中。
删除只读 exporter
用户
- 切换服务的 IP 访问列表以限制访问