跳转到主要内容
ClickHouse 不支持自动分片重平衡。不过,仍可按以下优先顺序对分片进行重平衡:
  1. 调整分布式表所使用的分片,让写入偏向新分片。这种方式可能会导致集群负载不均和热点问题,但在大多数写入吞吐量不算特别高的场景下通常是可行的。它不需要用户更改写入目标,也就是说,仍然可以继续写入分布式表。但这种方法无法帮助重平衡现有数据。
  2. 作为 (1) 的替代方案,可以修改现有集群,并在集群达到平衡之前仅向新分片写入,即手动控制写入权重。它与 (1) 有相同的局限性。
  3. 如果你需要重平衡现有数据,并且数据已经分区,可以考虑先分离分区,再手动将其迁移到另一个节点,然后重新附加到新分片。与后续方法相比,这种方式更依赖手动操作,但可能更快、资源消耗也更低。由于这是手动操作,因此需要自行规划数据重平衡过程。
  4. 通过 INSERT FROM SELECT 将数据从源集群导出到新集群。对于非常大的数据集,这种方式性能通常不佳,而且可能会给源集群带来显著的 IO 开销,并占用大量网络资源。这应视为最后的手段。
最后修改于 2026年6月19日