本文介绍在云数据库 ClickHouse 企业版集群之间进行数据迁移的方法。该方法利用remote函数,通过执行一个带有嵌套SELECT的INSERT INTO语句,即可实现高效、直接的数据复制,完成数据迁移。
适用场景
从还原的备份中迁移数据。
从开发服务复制数据到预发服务(或从预发到生产)。
操作步骤
步骤一:配置源集群权限并获取表结构
创建只读用户,用于数据迁移时查询源集群数据。
CREATE USER exporter IDENTIFIED WITH SHA256_PASSWORD BY 'password-here' SETTINGS readonly = 1;授予特定数据库表的查询权限。
GRANT SELECT ON test_db.test_tb TO exporter;获取源表结构。
SELECT create_table_query FROM system.tables WHERE database = 'test_db' AND TABLE = 'test_tb'
步骤二:在目标集群上创建表结构
创建数据库。
CREATE DATABASE test_db使用步骤一中获取的源表结构(
CREATE TABLE语句),在目标数据库上创建表。CREATE TABLE test_db.test_tb ...
步骤三:设置白名单
数据迁移过程中,源集群和目标集群必须允许互相连接,需完成以下设置:
说明
您可以通过SELECT * FROM system.clusters;查看云数据库 ClickHouse 企业版集群的IP地址。
步骤四:执行数据迁移
执行以下SQL,通过remote函数从源集群中读取数据并插入到目标表中。
INSERT INTO test_db.test_tb
SELECT *
FROM remote(
'source-hostname:9000', -- 源集群的访问地址和端口
'test_db', -- 源数据库名称
'test_tb', -- 源表名称
'exporter', -- 用户名
'password-here' -- 用户密码
);步骤五:(可选)安全配置与环境清理
为目标集群建立IP访问列表。
数据迁移完成后,如需将目标集群作为新的生产环境对外提供服务,需设置白名单。
删除源集群的只读用户。
DROP USER exporter;在源集群的白名单设置中,删除本次迁移添加的目标集群IP地址。
该文章对您有帮助吗?