首页
学习
活动
专区
工具
TVP
发布

Clickhouses数据迁移工具:Clickhouse-copier介绍

在使用clickhouse的时候,可能会有不同集群间迁移数据需求,这里可以使用如下几种方式:

DETACH/FREEZE分区,进行SCP拷贝,然后再ATTACH

alter table db.table DETACH PARTITION [partition]; #下线分区

alter table db.table FREEZE PARTITION [partition]; #备份分区

alter table db.table ATTACH PARTITION [partition]; #上线分区

利用remote函数

insert into ... select * from remote('ip',db.table,'user','password')

clickhouse-copier工具

这个工具是标准发布的clickhouse server的一部分,它可以在完全并行的模式下工作, 并以最有效的方式分发数据

三种方式的优缺点:

本文主要介绍Clickhouse-copier的使用方式

Clickhouse-copier是在安装clickhouse软件后自带的工具命令。

> clickhouse-copier--help

标★的比较重要,通常情况只需指定--daemon、--config和--task-path ,其他采用默认即可。

使用Clickhouse-copier需要借助zookeeper,为减少网络流量,建议clickhouse-copier在源数据所在的服务器上运行。

一、首先需要准备一个schema.xml配置

包括源和目标的集群分片信息,以及需要同步的表信息

关于schema.xml配置格式可参考:https://clickhouse.yandex/docs/en/operations/utils/clickhouse-copier/

二、完成schema.xml配置后,需要将此配置上载至 Zookeeper 节点的特定路径下 (//description)

可以创建多个任务

在zookeeper随便一个节点机器执行以下命令:

> ./zkCli.sh create /clickhouse/copytasks ""

> ./zkCli.sh create /clickhouse/copytasks/task1 ""

> ./zkCli.sh create /clickhouse/copytasks/task1/description "`cat schema.xml`"

三、准备zookeeper.xml配置文件

四、在clickhouse机器启动

源和目标都可以,为减少网络流量,建议clickhouse-copier在源数据所在的服务器上运行。

> clickhouse-copier --config zookeeper.xml --task-path /clickhouse/copytasks/task1--daemon

工具启动后,需要一段时间才能完成任务,具体取决于要复制的表的大小。若未指定--base-dir,则在当前所在目录下生成 clickhouse-copier_时间_pid 格式的目录,目录下包含两个日志文件,可以通过这两个日志文件查看复制错误及详情。

log.log #记录执行详细信息

五、注意事项

1、源和目标集群名称不能一样,会把源覆盖掉(重要)

2、如果目标没有库,不会自动创建库,需要提前建库

3、如果目标没有表,会自动创建表

4、复制表,副本需要手动创建表

5、目标库可以更改表名、分区、排序等

六、性能

七、结论

Clickhouse-copier可以在不同集群间迁移数据,还可以用于重新分片或更改表名及主键。在一个1对1的环境中,它的性能与insert ... select相同,但当它应用于大型ClickHouse集群时,它的性能拷贝速度会有很大提升,并且规避了并行复制任务带来的诸多问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190125G17B0600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券