文件TTL后mongo chunk不删除

时间:2017-06-07 10:52:07

标签: mongodb chunks

mongo config infomations:

  • mongo version:3.2.10
  • mongo shard with key:{secretTaskId:1,time:1}
  • TTL索引:{time:1},{expireAfterSeconds:60 * 60 * 24 * 8,background:true}#8天
  • mongo balancer启用&运行:sh.isBalancerRunning()===>真

问题描述

TTL配置正常工作,文档在超时时自动删除。 但是配置数据库中的块没有更新(删除),文件消失后仍然存在块。

e.g。 : js // chunks in config database // As the date is 2017-06-07 now, documents create in 2016 had removed, but the chunks for them are still remain. ( more old chunks can be found, not single.) { "_id": "****", "lastmod": Timestamp(3, 0), "lastmodEpoch": ObjectId("58253bbffbb3d96a85eccef1"), "ns": "***", "min": {"secretTaskId": "***", "time": ISODate("2016-11-11T03:32:40.045Z")}, "max": {"secretTaskId": "***", "time": ISODate("2016-11-14T09:20:45.684Z")}, "shard": "***" }

由于没有删除块,mongo分片群集不是balance属性。我认为平衡器对于分发的实际文档并不理想,并且基于错误块没有正确工作。

经过多次搜索,我没有得到解决方案。有人可以帮忙吗?感谢。

1 个答案:

答案 0 :(得分:0)

删除包含在其中的文档时,MongoDB中的块范围不会消失。将大块范围视为水桶,即使您从水桶中清空水,水桶本身仍然存在。块很相似。当它们填满以支持更好的平衡时,它们会分裂,但它们在清空时不会自动消失。

如果你想“摆脱”这些块,你必须合并它们。您可以使用MongoDB Docs中的mergeChunks命令找到有关合并块的更多信息。