mongodb:碎片收集数量持续减少

mongodb:碎片收集数量持续减少,mongodb,database-replication,sharding,Mongodb,Database Replication,Sharding,我有一个由几个碎片组成的小集群,每个碎片都是一个由2个真实节点和1个仲裁器组成的副本集。在一个集合上启用了切分,比如generator_v1_food 我已经停止了所有更新集合的程序(在这些程序中,只有upsert和find操作,根本没有remove)。然后,收集计数返回如下(2-3秒间隔)。我还关闭了平衡器。日志的最后几行(我操作的碎片)都是关于副本集的 mongos> db.generator_v1_food.find().count() 28279890 mongos> db.

我有一个由几个碎片组成的小集群,每个碎片都是一个由2个真实节点和1个仲裁器组成的副本集。在一个集合上启用了切分,比如generator_v1_food

我已经停止了所有更新集合的程序(在这些程序中,只有
upsert
find
操作,根本没有
remove
)。然后,收集计数返回如下(2-3秒间隔)。我还关闭了平衡器。日志的最后几行(我操作的碎片)都是关于副本集的

mongos> db.generator_v1_food.find().count()
28279890
mongos> db.generator_v1_food.find().count()
28278067
mongos> db.generator_v1_food.find().count()
28278008
... 
幕后发生了什么?任何指针都很好。

引用:

仅仅因为您将平衡器状态设置为“off”,并不意味着它仍在运行,并且完成了对上次执行的moveChunk的清理

您应该能够在config DB in changelog集合中看到上一个moveChunk.commit事件发生的时间,也就是moveChunk进程将文档从某个区块提交到新(目标)碎片的时间。但在此之后,旧碎片需要异步删除不再属于它的文档。由于“计数”是从元数据中获取的,实际上并没有查询有多少文档是“真实的”,因此在平衡回合期间(或未正确清理或平衡尝试中止的任何回合),它将加倍计算“正在运行”的文档数

阿西亚


您是否也检查了currentops?配置服务器重新启动后,
计数减少
停止。下次出现时,我将尝试检查
currentop
。谢谢