重新平衡数据
ClickHouse 不支持自动分片重新平衡。然而,有一些方法可以按优先顺序重新平衡分片:
-
调整 分布式表 的分片,使写入偏向新的分片。这可能会导致集群上的负载不平衡和热点,但在写入吞吐量不是非常高的情况下,这在大多数场景中是可行的。它不要求用户更改其写入目标,即可以保持为分布式表。这并不有助于重新平衡现有数据。
-
作为 (1) 的替代方法,修改现有集群并专门向新分片写入,直到集群达到平衡 - 手动加权写入。这与 (1) 有相同的限制。
-
如果您需要重新平衡现有数据并且已经对数据进行了分区,请考虑分离分区并手动将它们重新定位到另一个节点,然后再重新连接到新分片。这比后续技术更手动,但可能更快速且对资源的消耗更少。这是一个手动操作,因此需要考虑数据的重新平衡。
-
通过 INSERT FROM SELECT 将数据从源集群导出到新集群。在非常大的数据集上,这不会产生良好的性能,并且可能会在源集群上产生显著的 IO 并消耗大量的网络资源。这代表着最后的手段。