You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将2亿条ClickHouse数据行迁移至另一台服务器?

针对ClickHouse 2亿条数据迁移的优化方案

原Python+CSV+FTP方案的核心问题

  • 效率极低:Python单进程拉取无法匹配ClickHouse的高并发查询能力,2亿条数据的拉取、转存会消耗大量时间
  • 资源浪费:CSV是文本格式,相比ClickHouse原生列存格式,体积至少膨胀3-5倍,占用更多磁盘和传输带宽
  • 容错性差:中间环节多(查询→存CSV→FTP→导入),任意一步出错都要重新执行,没有原生断点续传机制

推荐的高效迁移方案

方案1:ClickHouse原生跨节点INSERT SELECT(最优解,网络互通场景)

如果两台服务器能互相访问ClickHouse端口,直接用原生跨节点插入:

  1. 在目标服务器创建与源表结构、引擎、分区、索引完全匹配的表
  2. 执行跨节点插入SQL:
-- 可根据服务器配置调整并发数
SET max_insert_threads = 8;

INSERT INTO target_db.target_table
SELECT * FROM remote('source_host:9000', source_db.source_table, 'username', 'password')
WHERE [你的过滤条件,筛选出目标2亿条数据];
  • 优势:全程由ClickHouse原生引擎处理,利用列存高效传输特性,无中间文件,速度最快;自动处理分片失败,容错性强
  • 注意:若数据量过大,可按分区分批迁移,避免单次写入压力过高

方案2:clickhouse-backup工具(离线/网络受限场景)

适合两台服务器无法直接互通的情况:

  1. 源服务器导出指定数据:
clickhouse-backup create --table source_db.source_table --where "[你的过滤条件]" backup_200m
  1. 用SCP/RSYNC将压缩后的备份文件传输到目标服务器(体积远小于CSV)
  2. 目标服务器恢复数据:
clickhouse-backup restore --table target_db.target_table backup_200m
  • 优势:备份文件为ClickHouse原生压缩格式,传输效率高;支持增量备份与断点续传,容错性强

方案3:clickhouse-client原生格式导出/导入

不想用备份工具时的轻量方案:

  1. 源服务器导出原生格式数据:
clickhouse-client --host source_host --query "SELECT * FROM source_db.source_table WHERE [过滤条件]" --format Native > data_200m.native
  1. 传输data_200m.native到目标服务器
  2. 目标服务器导入:
clickhouse-client --host target_host --query "INSERT INTO target_db.target_table FORMAT Native" < data_200m.native
  • 优势:原生格式读写效率比CSV高数倍,操作简单,仅依赖官方客户端

总结

优先选择方案1(跨节点直接插入),网络受限则选方案2或3。Python脚本转CSV的方案完全没必要——既浪费资源,又拖慢迁移速度,容错性还差。

内容的提问来源于stack exchange,提问作者Andrey Mihaylov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 11:02:44