我正忙于考虑在MongoDB中的集合上使用TTL索引,并想知道在恢复时会有什么影响。
例如,如果我将集合的TTL设置为2天:
db.logEvents.ensureIndex({"datestamp":1},{expireAfterSeconds:172800})
如果一周后我使用mongodump restore备份每日日志,logevents集合是否为空?对于mongodump/mongorestore,我正在考虑在恢复之前在
logEvents.metadata.json
中手动修改/删除索引-这行吗?如果从原始数据文件还原呢?如何在datadir中使用还原的原始文件启动mongod服务而不立即过期数据?
最佳答案
这是个好问题!
为了检查我是否创建了一个集合并测试了您的场景,其中恢复的数据不在ttl中。
记录已还原,并在接下来的几秒钟内从集合中移除。
在更改metadatafile中的索引详细信息之后,我能够在原始ttl窗口之外列出记录。
删除的条目:
,“ExpireAfterSeconds”:36.0秒
只要使用NMAP
引擎,从原始文件还原也可以播放。WiredTiger
在文件外部存储一些额外数据,我无法从wt文件还原集合。
玩得开心!