从自管理的 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 访问列表以限制访问