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