具有 TTL 索引和数据恢复的过期 mongo 数据

Expired mongo data with TTL index and data restores

我正忙于考虑对 MongoDB 中的集合使用 TTL 索引,并想知道在恢复时会有什么影响。

例如,如果我将集合的 TTL 设置为 2 天:

db.logEvents.ensureIndex({"datestamp":1},{expireAfterSeconds:172800})

如果我在一周后使用 mongodump restore 备份每日日志,logEvents 集合是否会为空?对于 mongodump / mongorestore,我正在考虑在 logEvents.metadata.json 中手动修改/删除索引,然后再恢复 - 这行得通吗?

如果从原始数据文件恢复怎么办 - 我怎样才能在 datadir 中使用恢复的原始文件启动 mongod 服务而不立即使数据过期?

这是个好问题!

检查我是否创建了一个集合并测试了您的场景,其中恢复的数据在 ttl 之外。

记录已恢复,并在接下来的几秒钟内从集合中删除。

元数据文件 中更改索引详细信息后,我能够列出原始 ttl 之外的记录 window。

删除条目:

,"expireAfterSeconds":36.0

只要您使用 NMAP 引擎,从原始文件恢复也可以发挥作用。 WiredTiger 在文件外存储了一些额外的数据,我无法从 WT 文件恢复集合。

玩得开心!