我们在生产中使用tarantool数据库(使用vshard进行分片)。我们直接从4个分片开始。现在,我们希望在不停机的情况下将其增加到6个。但是,在添加了另外两个分片之后,rebalancer启动,并且不允许进行读/写操作。有什么办法可以实现重新平衡来支持各种操作?我们有能力增加手术时间。但这应该是成功的。什么是在tarantool上添加碎片并使产品前部带来的最小麻烦的最佳实践?
目前,我们唯一能想到的解决方案是进入维护模式,并在尽可能短的时间内完成重新平衡!!!
答案 0 :(得分:1)
您无法写入当前正在传输的存储桶,但无法写入其他存储桶(因此,这并不意味着整个分片都被锁定了)。
此外,您可以通过以下方式减轻影响: -使水桶变小(增加bucket_count) -降低重新平衡的速度,以便同时传输更少的存储桶(重新平衡器配置)。
假设您有16384个存储桶,数据集为75GB。这意味着平均存储桶大小约为5 Mb。如果将rebalancer_max_receiving参数减少到10,则将仅同时传输10个存储桶(50Mb)(这使他被锁定以进行写操作)。
这样,由于您的客户端可以执行重试并且分片之间的网络足够快,因此重新平衡将非常缓慢,