mongo 文件 TTL 后块不删除
mongo chunk not delete after documents TTL
mongo 配置信息:
- mongo版本:3.2.10
- mongo 密钥分片:{secretTaskId:1,时间:1}
- TTL index: {time: 1}, {expireAfterSeconds: 60 * 60 * 24 * 8, background: true} # 8 days
- mongo 平衡器启用 & 运行: sh.isBalancerRunning() ===> true
问题描述
TTL 配置工作正常,超时时自动删除文档。 但是配置数据库中的块没有更新(删除),随着文档的消失,块仍然存在。
例如:
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 分片集群不平衡 属性。我认为平衡器对分发的实际文档并不理想,并且基于错误块无法正确工作。
我找了很多没有解决办法。任何人都可以帮忙吗?谢谢。
MongoDB 中的块范围在其中包含的文档被删除时不会消失。将块范围想象成水桶,即使您倒空了水桶中的水,水桶本身仍然存在。块非常相似。它们在填满时会分裂以支持更好的平衡,但在清空时它们不会自动消失。
如果您想要 "get rid" 这些区块,您必须合并它们。您可以在 MongoDB Docs.
中找到有关使用 mergeChunks
命令合并块的更多信息
mongo 配置信息:
- mongo版本:3.2.10
- mongo 密钥分片:{secretTaskId:1,时间:1}
- TTL index: {time: 1}, {expireAfterSeconds: 60 * 60 * 24 * 8, background: true} # 8 days
- mongo 平衡器启用 & 运行: sh.isBalancerRunning() ===> true
问题描述
TTL 配置工作正常,超时时自动删除文档。 但是配置数据库中的块没有更新(删除),随着文档的消失,块仍然存在。
例如:
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 分片集群不平衡 属性。我认为平衡器对分发的实际文档并不理想,并且基于错误块无法正确工作。
我找了很多没有解决办法。任何人都可以帮忙吗?谢谢。
MongoDB 中的块范围在其中包含的文档被删除时不会消失。将块范围想象成水桶,即使您倒空了水桶中的水,水桶本身仍然存在。块非常相似。它们在填满时会分裂以支持更好的平衡,但在清空时它们不会自动消失。
如果您想要 "get rid" 这些区块,您必须合并它们。您可以在 MongoDB Docs.
中找到有关使用mergeChunks
命令合并块的更多信息