我需要能够恢复 单个数据库,甚至是备份中的单个集合。由于mongodump --oplog
仅适用于完整实例(副本集),因此我做了以下过程,仅过滤我想要从 oplog.bson 生成的数据库中的条目。 --oplog选项。
有人能告诉我这是否正确或者我是否遗漏了什么?
首先我只恢复我需要的db(这个例子中的db是 test )
mongorestore -d test dump/test
将--oplog选项生成的 oplog.bson 文件恢复为随机集合
mongorestore -d oplog -c oplog dump/oplog.bson
从已恢复的 oplog.bson 集合转储仅引用我正在恢复的数据库的文档
mongodump -d oplog -c oplog -q "{ns:/^test[.]/}" -o oplog
使用带有过滤操作的最后一次转储使用--oplogReplay选项进行恢复
mongorestore --oplogReplay oplog/oplog
最后我删除了临时的oplog集合。
mongo --eval "db.getSisterDB('oplog').dropDatabase()"
提前致谢!
答案 0 :(得分:0)
基本上,这是一种方法。或者你可以在转储特定数据库后做额外的export
。
mongoexport -d local -c oplog.rs --query="{ns:/^test[.]/}" -o oplog.dump
2017-10-10T11:51:50.780+0300 connected to: localhost
2017-10-10T11:51:51.737+0300 local.oplog.rs 0
2017-10-10T11:51:51.938+0300 local.oplog.rs 3
2017-10-10T11:51:51.938+0300 exported 3 records
您现在已经直接json
转储文件,您可以阅读