因此,我们有一个配置为2个碎片(每个是一个副本集)和一个切碎的集合。
每个碎片大约有1000万条记录。我们使用的是Mongo2.6.4版本。我们用hash_id切分键进行切分,我们为切分生成了特定的切分键。
我们通过id从mongos获取数据,并且大多数查询都能工作,但是对于一些查询(大约10k),mongos返回null,尽管它们存在于其中一个碎片中,并且我们可以直接从碎片中获取它。
有谁知道为什么mongos或config服务器没有某些it的信息,是否有任何方法来修复它?是否有任何一种操作可以刷新配置服务器中的数据,以获得有关数据库中所有记录的信息?
谢谢,伊凡
发布于 2015-11-07 14:02:54
发出flushRouterConfig命令,并试一试。它强制mongos刷新已过时的缓存元数据。
如果不起作用就告诉我。
发布于 2017-07-16 15:38:37
一种解决方案是从两个副本集(碎片)收集该集合,然后将其从集群中删除。在已启用切分的情况下重新创建它,然后从两个转储文件中mongoimport所有数据。
但是,如果一个节点可以有足够的磁盘空间来处理所有文档,那么您可以使用把另一片碎片抽干 (即将所有文档移动到一个碎片),然后再添加另一个碎片,让平衡器来平衡集群。
后者具有不需要维护中断的先进性,系统一直在为客户提供服务。
https://dba.stackexchange.com/questions/120709
复制相似问题