分片群集上的MongoDB count()不匹配

时间:2014-11-07 14:30:07

标签: mongodb sharding

我已经将一个包含24,895,212个元素的集合加载到MongoDB中。我有5个分片启用分片。数据在5个分片中均匀分片。 Balancer当前没有运行(sh.isBalancerRunning()返回false)。

根据文档,一旦平衡器完成分片,我应该能够运行db.collection.count()命令来获取行数。但是,如果我这样做,我会获得25,245,767行。不知道额外的350,555行是从哪里来的。请注意,如果我运行命令:

mongos>  db.collection.find({}).itcount()

我得到24,895,212的正确数,但问题是这个命令运行了大约15分钟......

关于我哪里出错的任何想法,为什么我有350,555行差异?我还尝试通过发出命令来运行孤立清理过程:

mongos> db.runCommand( { cleanupOrphaned: "<db>.<collection>" } )

然而,这个过程持续了大约9个小时过夜而且没有在早上结束......

1 个答案:

答案 0 :(得分:2)

由于清理孤立文件(由于迁移失败导致)没有完成,很可能它们仍然存在。此外还有一个漏洞:Sharded collection counts (on primary) can report too many results

此错误将在2.7中修复。我认为你面临同样的问题。