几天前,我开始看到一个问题,即进入mongo的数据不再在集群中传播。除了非常少量的数据之外,所有东西都将进入数据库的主碎片,即使碎片键没有更改。shard键是另一个文档字段的MD5和,类似于mongo的2.4版本中的散列切分键,因此应该有足够的可变性来在三个碎片之间喷洒文档。我们目前运行2.0.5。
我在config数据库中找不到任何东西来说明为什么文档只进入主目录。我们每天创建一个新的集合,并将大约4000万个文档写入其中。我已经证实它们是切分的,平衡器正在缓慢地从主块移动,但是不够快,无法跟上写速率。
每个写入mongo的服务器都有自己的mongos实例,并且有一些用于读取数据的进程的mongos实例。我们运行的总数是25多一点。mongos实例的数量会导致这个问题吗?我似乎需要手动定义分块的范围,但这对我来说似乎是个问题。我想保持自动切分的位置。在配置数据库中,这些信息驻留在哪里?能够看到mongos实例用于自动切分的范围吗?
发布于 2013-08-09 03:06:17
根据我所发现的,一个新创建的被切分的集合将不会有任何块指向除了主块以外的碎片。直到数据块被分割后,数据才会被指向其他地方。对于大量插入到Mongo,这可能会造成问题。总容量的增加可能会使系统无法正确地分发数据,因为以前的集合能够正确地跨越这三个碎片。
解决方案是根据切分键的知识对集合进行预分割。How to define sharding range for each shard in Mongo?给出了如何正确地这样做的信息。
发布于 2013-08-08 15:39:11
使用前不要丢弃集合。
https://stackoverflow.com/questions/18130188
复制相似问题