使用ClickHouse数据迁移工具
ClickHouse数据迁移工具可以将某几个ClickHouseServer实例节点上的一个或多个MergeTree引擎分区表的部分分区迁移至其他ClickHouseServer节点上相同的表中。在扩容场景中,可以使用该工具将原节点上的部分数据迁移至新增节点上,从而达到扩容后的数据均衡。
前提条件
- ClickHouse服务运行正常,Zookeeper服务运行正常,迁入、迁出节点的ClickHouseServer实例状态正常。
- 请确保迁入节点已有待迁移数据表,且确保该表是MergeTree系列引擎的分区表。
- 创建迁移任务前请确保所有对待迁移数据表的写入任务已停止,且任务启动后,只允许对待迁移数据表进行查询操作,禁止对该表进行写入、删除等操作,否则可能会造成迁移前后数据不一致。
- 如果开启自动均衡,则只会迁移ReplicatedMergeTree系列引擎的分区表,并且该分区表需要有对应的分布式表存在。
- 迁入节点的ClickHouse数据目录有足够的空间。
- 已创建ClickHouse逻辑集群,具体请参考使用ClickHouse数据迁移工具章节。
- 检查确认已开启SFTP服务。
操作步骤
- 登录Manager,选择“集群 > 服务 > ClickHouse > 逻辑集群”,单击待操作的逻辑集群名称,选择“数据迁移”,单击“创建迁移任务”。
- 创建的迁移任务当前有数量限制,默认最多20个迁移任务,该限制可以在Manager上的ClickHouse配置界面通过修改max_migration_task_number配置项进行修改。一个迁移任务会占用ZooKeeper上一定数量的znode节点,不建议将可创建的迁移任务数量上限设置过大。
- 当已有的迁移任务数量超过可创建迁移任务的最大数量上限时,则不能创建新的迁移任务,系统会自动删除创建时间最早且执行成功的历史迁移任务。若不存在执行成功的历史任务,可以根据实际情况执行11,手动删除历史迁移任务。
- 在创建迁移任务界面,填写迁移任务的相关参数,具体参考如下表1。填写完成后单击“下一步”。如果未开启“自动均衡”,则执行3。如果开启“自动均衡”,则执行5。
表1 迁移任务参数说明 参数名
参数取值说明
任务名称
填写具体的任务名称。可由字母、数字及下划线组成,长度为1~50位,且不能与已有的迁移任务相同。
自动均衡
选择是否开启自动均衡。
- 开启:系统支持自动均衡表用户可选,需要用户根据数据表列表手动选择需要做均衡的表,自动选择迁入迁出节点,使得集群内用户选择的表对应分布式表的ReplicatedMergeTree系列引擎的分区表在各个节点上数据分布达到均衡状态。
- 关闭:需要手动选择迁入迁出节点。
任务类型
- 定时任务:选择定时任务时,可以设置“开始时间”参数,设定任务在当前时间以后的某个时间点执行。
- 即时任务:任务启动后立即开始执行。
开始时间
在“任务类型”参数选择“定时任务”时填写,有效值为当前时间以后的某个时间(最长为90天以后)。
带宽上限
每个ClickHouseServer节点的带宽上限,取值范围1-1000MB/s。自动均衡场景请尽可能提高带宽,默认不流控。
迁移量
每张迁移表所迁移数据量占该表总数据量的百分比。取值范围为0-100%,如果该值为空,则默认为50%。在“自动均衡”关闭时该参数有效。
- 在“选择数据表与迁出节点”界面的左侧列表中勾选待迁移的数据表名称,单击“确认”。在右侧列表中勾选所选数据表的迁出节点,单击“下一步”。
勾选某个节点后会自动勾选与之互为副本的其余节点作为迁出节点。
- 在“选择迁入节点”界面,勾选迁入节点的主机名称,单击“下一步”,执行6。
迁入节点与迁出节点不能相同,已勾选的迁出节点,将不在该界面显示。
- 选择需要做均衡的表,单击“下一步”。
- 确认任务信息,确认无误后可以单击“提交”提交任务。
数据迁移工具将根据待迁移数据表的大小和“创建迁移任务”界面设置的“迁移量”大小自动计算需要迁移的分区。
- 提交迁移任务成功后,单击操作列的“启动”。如果任务类型是即时任务则开始执行任务,如果是定时任务则开始倒计时。
- 迁移任务执行过程中,可单击“取消”取消正在执行的迁移任务。若取消任务,则不会回退迁入节点上已迁移的数据。
自动均衡任务取消后不会立即停止,任务将在当前正在迁移的表迁移完成后停止。非自动均衡任务取消后会立即停止,停止后可能会出现正在迁移的分区已迁移至迁入节点,但迁出节点上该分区还未删除的情况,此时会有重复数据,请手工确认迁出节点上是否存在残留的已迁移分区,若存在残留的已迁移分区,请确认该分区在迁入节点上的总数据量与在迁出节点上的总数据量一致,然后删除迁出节点上的该分区。
- 单击“更多 > 详情”可以查看迁移任务的详细信息。
- 迁移完成后,可单击“更多 > 结果”查看迁移结果。
非自动均衡任务可以查看每张迁移表被迁移的分区,以及该分区的迁移结果。若该分区的迁移结果为未完成,则说明该分区已拷贝至迁入节点,但迁入节点上该分区的数据量与迁出节点上该分区的数据量不一致,所以未将迁出节点上该分区删除,此时请确认迁入节点与迁出节点该分区的数据量是否一致,手工确认处理后再将迁出节点上分区数据删除。
- 迁移完成后,可单击“更多 > 删除”清理ZooKeeper以及迁出节点上该迁移任务相关的目录。