ClickHouse_ClickHouse跨集群迁移数据表工具
关键命令
1 | insert into sz.app_jdr_traffic_sz_all_chan_mvp_i_d_d_d select * from remote('11.102.245.98:9600',sz,app_jdr_traffic_sz_all_chan_mvp_i_d_d,'rw_sz_merchant_flow_slave_v1','RkDtzFEgMbxKmCH2MbkO') where partition >= '2023-12-11' and partition <= '2023-12-11' settings receive_timeout = 6000, send_timeout = 6000, insert_deduplicate = 0; |
主要使用上述语句可以实现跨集群数据迁移,需要注意:
- 一般是读本地表写分布式表,因为跨集群的分片数和副本数不一定一致,需要指定新表的分片键,然后写分布式表,让分布式表帮助分片;
- 需要轮询源表的不同节点,分别读数,因为需要尽量分散读数操作,避免超出时间、内存等配额限制;
- 需要轮询源表的不同分区,分别读数,因为需要尽量分散读数操作,避免超出时间、内存等配额限制。
完整工具代码
启动命令
/usr/bin/python3 copyData.py –src_db eco_data_bp –src_table adm_eco_s10_afs_sku_sum_test_local –dest_db eco_data_bp –dest_table adm_eco_s10_afs_sku_sum_test_local
conf.json
1 | { |
cluster.py
1 | from multiprocessing import Pool |
copyData.py
1 | #!/usr/bin/python3 |