Mongodb 2.0.5分片不再平衡

时间:2013-08-08 15:34:25

标签: mongodb sharding

几天前我开始发现一个问题,即进入mongo的数据不再在群集中传播。即使分片键未更改,除了非常少量的数据之外的所有内容都将转到数据库的主分片。分片键是另一个文档字段的MD5总和,类似于mongo v2.4中的散列分片键,因此应该有足够的可变性来在三个分片上喷洒文档。我们目前正在运行2.0.5。

我在配置数据库中找不到任何可以指示文档仅转到主数据库的内容。我们每天创建一个新的集合,并在其中写入大约4000万个文档。我已经验证它们是分片的,并且平衡器正在从主要部分缓慢移动块,但速度不够快,无法跟上写入速率。

写入mongo的每个服务器都有自己的mongos实例,并且有几个mongos实例用于读取数据的进程。我们运行的总数有点超过25. mongos实例的数量是否会导致此问题?似乎我需要手动定义分片范围,但这对我来说似乎有问题。我想保持自动分片。在配置数据库中这些信息驻留在哪里?是否有可能看到mongos实例用于自动分片的范围是什么?

2 个答案:

答案 0 :(得分:0)

请勿在使用前删除集合。

答案 1 :(得分:0)

根据我发现的内容,新创建的分片集合不会将任何块定向到主分片以外的分片。直到块被分割后才会将数据导向其他地方。对于大量插入Mongo,这可能会导致问题。总体积的增加可能会使系统无法正确分配数据,因为以前的集合能够正确地跨越三个分片。

解决方案是根据分片键的知识预分割集合。 How to define sharding range for each shard in Mongo?提供了有关如何正确执行此操作的信息。