MongoDB分片,添加新节点时如何重新平衡?

时间:2011-07-04 20:04:56

标签: mongodb sharding

我正在尝试理解MongoDB和分片的概念。如果我们从2个节点和分区开始说,客户数据,基于姓氏,其中A到M数据存储在节点1上,N到Z数据存储在节点2上。当我们想要扩展并添加更多节点时会发生什么?我只是看不出它会如何起作用。

2 个答案:

答案 0 :(得分:7)

如果您有2个节点,则并不意味着数据被分区为2个块。它可以通过分区来表示10个块,其中6个在服务器1上,其余部分在服务器2上。

当您添加另一台服务器时,MongoDB能够在新配置的节点之间重新分配这些块

您可以在官方文档中阅读更多内容:

答案 1 :(得分:5)

如果有多个可用分片,MongoDB将开始将数据迁移到其他分片 一旦你有足够数量的块。这种迁移称为平衡,是 由称为平衡器的过程执行。平衡器将块从一个碎片移动到另一个碎片。

要进行平衡回合,碎片必须至少比块数多9个 人口最少的碎片。那时,大块将从拥挤的碎片迁移出来 直到它与其余的碎片均匀。

当您向群集添加新节点时,MongoDB会在新配置的节点之间重新分配这些块。 这是一个小提取,要完全理解在添加新节点时如何重新平衡阅读Kristina Chodrow的书“Scaling MongoDB”第2章“理解分片”