有奖捉虫:行业应用 & 管理与支持文档专题 HOT
云数据仓库 TCHouse-C 支持通过 ClickHouse-Copier 实现集群迁移。

通过 ClickHouse-Copier 实现集群迁移

Copier 实现与使用

ClickHouse-Copier,ClickHouse 官方的数据迁移工具,主要基于分布式表的 insert 方式实现集群的迁移或数据的重分布。 ClickHouse-Copier 的创建是为了在集群之间移动数据。它运行简单的 INSERT...SELECT 查询,并且可以在具有不 同引擎参数的表之间以及具有不同分片数量的集群之间复制数据。在任务配置文件中,您需要描述源集群和目标集 群的布局,并列出您需要复制的表。您可以复制整个表或特定分区。ClickHouse-Copier 使用临时分布式表从源集 群中选择并插入到目标集群中。 Copier 通过配置源端和目标端集群的信息,以及迁移表的分布式逻辑,通过在每个 shard 上,每个 partition 构造迁 移任务,将数据基于一定的规则从每个partition 中读取,然后 insert 到目标集群的临时表中,然后基于 attach partition 将数据挂载到最终表中。而且整个任务的执行情况会保存到 zookeeper 中,可以实现任务的重启、短点续传,以及多个 Copier 进程共同执行一个任务。 Copier 作为官方的迁移工具,也是支持 MergeTree 的表引擎,包括复制表和非复制表。
?
?

使用 Copier 的优点

1. ClickHouse 社区官方工具,社区一直在维护和改进,包括功能和性能等。
2. 虽然基于 select & insert 的逻辑实现,并且每个 copier 进程基本是单线程执行,但是 copier 支持多个进程处理 一个任务。如果每个 shar上都执行一个或多个进程,让每个 copier 都处理本地 shard 数据,会提高整体性能,集群越大,进程数越多,整体性能越好。
3. 能够很好的兼容各种分布式表的分片规则,完全基于分布式表的逻辑进行数据的读取和写入,能够根据用户在任务中配置的逻辑,实现迁移时的数据写入逻辑的控制(例如保持原来的逻辑或调整分片规则)。
4. 能够兼容迁移前后的集群分片大小,不需要一一对应。
5. 不受业务的写入和后台 merge 的影响。
6. 能够在 zookeeper 中记录迁移任务的状态,支持遇错重试,支持短点重试。通过多个进程的逻辑,让迁移的稳定有一定保证。
7. 不依赖复制表,只要是 MergeTree 类的表都可以支持。

使用 Copier 的注意事项

1. 易用性一般,从社区反馈来说,很多人配置起来较麻烦,较难,官方的资料较少,需要摸索出一套最佳实践。
2. 单机性能较低,需要较多进程较多 shard 的情况下性能较高,官方也推荐较大集群下性能较好。
3. 物化视图的迁移不能做到一步到位,很难保证基础表和物化视图的逻辑关系的保持,需要根据表的特点精心设置迁移方案,降低迁移整体流程的时?,才能让业务尽可能低的受到迁移的影响。
4. 不支持增量迁移,虽然在迁移的过程中支持业务的写入和 merge 等操作,但是同样不能支持增量迁移,客观的需要业务停止写入;也不支持 DDL 操作。
5. 不支持非 MergeTree 类表引擎。


http://www.vxiaotou.com