2012-03-29 70 views
2

我有一个集合的分片键和索引endabled。但是当我运行平衡时,块不会移动到这个集合中,因为其他集合块正在按预期方式移动到其他机器。只有一个块从该集合中移出。mongo数据库平衡

回答

2

目前(这将在不久的将来发生变化),平衡器将只在有足够的不平衡(8或更多)时开始移动块。如果块数比这更接近,那么将不会有移动。块的数量取决于最大块大小(在2.0.x中写入时为64MB)和写入的数据量。每当将一定数量的数据写入块时就会触发分割。

因此,如果您不是将数据添加到集合中,或者数据不是非常大,则可能需要一些时间才能创建必要的块数,以便引发平衡。

您可以通过手动分裂考虑到这一点你自己的手中,并移动块:

http://www.mongodb.org/display/DOCS/Splitting+Shard+Chunks

或者,您可以添加更多的数据来触发分裂和平衡最终会踢,移动块在你身边。

+0

我的数据是非常巨大的数百万条记录每个记录约3000个字符。当我做printShrdingStatus时,它显示一台机器有2500个块,其他机器有1个块,每个 – Sandeep 2012-03-29 09:59:01

+0

在日志中有错误?如果平衡器不能移动块(块太大是常见块),应该存在。你可能想尝试一些手动操作,看看它们是否工作。 – 2012-03-29 10:55:37