0

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

我在配置数据库中找不到任何可以表明为什么文档只发送到主数据库的内容。我们每天都会创建一个新集合,并向其中写入大约 4000 万份文档。我已经验证它们是分片的,并且平衡器正在缓慢地从主节点移动块,但速度不足以跟上写入速率。

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

4

2 回答 2

0

使用前不要丢弃收藏品。

于 2013-08-08T15:39:11.893 回答
0

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

解决方案是根据分片键的知识预先拆分集合。如何在 Mongo 中为每个分片定义分片范围?提供有关如何正确执行此操作的信息。

于 2013-08-09T03:06:17.567 回答