partition]; #上线分区 利用remote函数 insert into ... select * from remote('ip',db.table,'user','password') clickhouse-copier 并行操作; 可以变更表名主键; 可以变更分区;配置繁琐; 需要借助zookeeper使用; 本文主要介绍Clickhouse-copier的使用方式 Clickhouse-copier是在安装clickhouse > clickhouse-copier --help usage: clickhouse-copier --config-file <config-file> --task-path <task-path 使用Clickhouse-copier需要借助zookeeper,为减少网络流量,建议clickhouse-copier在源数据所在的服务器上运行。 > clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copytasks/task1 --daemon 工具启动后,需要一段时间才能完成任务
remote/remoteSecure和cluster/Distributed表 clickhouse-copier 再导入到目标实例使用第三方clickhouse-backup工具将数据从源实例导出,再导入到目标实例利用remote、cluster或者Distributed表函数直接在目标实例访问源实例数据使用官方clickhouse-copier clickhouse-copier会在目标实例创建_piece_x表,将源实例的数据拆分到这些临时表中, 最后将数据插入回目标实例的目标表。 clickhouse-copier旧版本存在bug^clickhouse_copier_bugs,若遇到DB::Exception: Engine Distributed doesn't support ,可以尝试使用更新版本的clickhouse-copier。使用clickhouse-copier时,源表、目标表的数据插入都要停止。迁移时设置好数据时间范围,方便迁移完成后补全迁移期间空档数据。
对于不同数据规模,我们选择不同的方案: 对于数据量比较小的表,通常小于10GB情况下,可以将数据到处为CSV格式,在云上集群重新写入数据; 使用clickhouse发行版自带工具clickhouse-copier 本文详解clickhouse-copier 完成跨ClickHouse集群数据迁移(当然也可以用户集群内部数据不同表间数据迁移)。 2. 由于clickhouse-copier 需要Zookeeper存储数据迁移任务信息,需要部署一个Zookeeper集群。 启动任务 定义好迁移任务后,就可以启动clickhouse-copier来迁移数据了。在此之前,需要准备的配置文件, 配置文件中描述了Zookeeper地址,以及日志配置。 如果数据量比较多,可以部署多个clickhouse-copier并发执行迁移任务。 5. 总结 clickhouse-copier是ClickHouse发行版自带的工具,在稳定性可靠性上是有保证的。
Clickhouse-copier 使用 Zookeeper 来管理同步任务,可以同时运行多个 clickhouse-copier 实例。 Clickhouse-copier 可以监听 /task/path/description 的变化,动态加载新的配置而不需要重启。 理论上 clickhouse-copier 运行在源集群或目标集群的环境都可以,官方文档推进在源集群,这样可以节省带宽。 应该需要相同的拓扑结构 不确定,可能没有 只支持 MergeTree 系列 从官方和社区的一些资料综合来看 clickhouse-copier 功能最强大,不过考虑到数据量较少,而且对 clickhouse-copier 关于别的数据迁移方案、更多的 clickhouse-copier 使用案例,可参考 Altinity 的博客 Clickhouse-copier in practice.
对于不同数据规模,我们选择不同的方案: 对于数据量比较小的表,通常小于10GB情况下,可以将数据到处为CSV格式,在云上集群重新写入数据; 使用clickhouse发行版自带工具clickhouse-copier 本文详解clickhouse-copier 完成跨ClickHouse集群数据迁移(当然也可以用户集群内部数据不同表间数据迁移)。 2. 由于clickhouse-copier 需要Zookeeper存储数据迁移任务信息,需要部署一个Zookeeper集群。 启动任务 定义好迁移任务后,就可以启动clickhouse-copier来迁移数据了。在此之前,需要准备的配置文件, 配置文件中描述了Zookeeper地址,以及日志配置。 如果数据量比较多,可以部署多个clickhouse-copier并发执行迁移任务。 5. 总结 clickhouse-copier是ClickHouse发行版自带的工具,在稳定性可靠性上是有保证的。
clickhouse-copier:用于在ClickHouse集群之间复制数据。可以将数据从一个集群复制到另一个集群,支持增量复制和全量复制。
我们看最终的这个编译结果, 图1 clickhouse-benchmark:性能测试工具 clickhouse-client:Clickhouse的客户端工具 clickhouse-compressor:压缩工具 clickhouse-copier
copier 任务拉起nohup clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copier/table1 -- /logs/table1 & nohup clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copier/table1
4.5 目前对社区的贡献 在使用 clickhouse-copier 工具时发现无法处理非分区表,进行了修复,也被社区采纳。Fix #15235. When clickhouse-copier handle non-partitioned table, throws segfault error. 尽管我们开发了一套工具基于 clickhouse-copier 来帮助运维进行这个操作,从而加速整个过程,降低人工操作的错误率。但是被迁移的表在迁移过程中仍然需要停止写入的。 When clickhouse-copier handle non-partitioned table, throws segfault error. https://github.com/ClickHouse
4.5 目前对社区的贡献 在使用 clickhouse-copier 工具时发现无法处理非分区表,进行了修复,也被社区采纳。Fix #15235. When clickhouse-copier handle non-partitioned table, throws segfault error. 尽管我们开发了一套工具基于 clickhouse-copier 来帮助运维进行这个操作,从而加速整个过程,降低人工操作的错误率。但是被迁移的表在迁移过程中仍然需要停止写入的。 When clickhouse-copier handle non-partitioned table, throws segfault error. https://github.com/ClickHouse
= MergeTree ORDER BY id AS SELECT * FROM mysql('hostip:3306', 'db', 'table', 'user', 'passwd') ; 4) clickhouse-copier
因此,我们采用了一种比较曲折的方法:将原表重命名,在所有节点上建立与原表schema相同的新表,将实时数据写入新表,同时用clickhouse-copier工具将历史数据整体迁移到新表上来,再删除原表。
因此,我们采用了一种比较曲折的方法:将原表重命名,在所有节点上建立与原表 schema 相同的新表,将实时数据写入新表,同时用 clickhouse-copier 工具将历史数据整体迁移到新表上来,再删除原表
因此,我们采用了一种比较曲折的方法:将原表重命名,在所有节点上建立与原表 schema 相同的新表,将实时数据写入新表,同时用 clickhouse-copier 工具将历史数据整体迁移到新表上来,再删除原表
因此,我们采用了一种比较曲折的方法:将原表重命名,在所有节点上建立与原表schema相同的新表,将实时数据写入新表,同时用clickhouse-copier工具将历史数据整体迁移到新表上来,再删除原表。
扩容时新节点不会自动承担查询负载,需要手动使用工具如 clickhouse-copier 或 clickhouse-backup 迁移副本。
因此,我们采用了一种比较曲折的方法:将原表重命名,在所有节点上建立与原表schema相同的新表,将实时数据写入新表,同时用clickhouse-copier工具将历史数据整体迁移到新表上来,再删除原表。
在扩容场景下,新节点不会自动承担查询负载,需要运维人员手动使用clickhouse-copier或clickhouse-backup等工具进行数据迁移。
ClickHouse 一般通过 Remote Function 或者 ClickHouse-Copier 来实现 CCR。