【发布时间】:2017-10-09 15:01:07
【问题描述】:
我需要能够恢复一个单个数据库,甚至是备份中的单个集合。由于mongodump --oplog 仅适用于完整实例(副本集),因此我进行了以下过程以仅过滤我想要从由生成的 oplog.bson 恢复的数据库中的条目 -- oplog 选项。
有人可以告诉我这是正确的还是我遗漏了什么?
-
首先我只恢复我需要的数据库(在这个例子中数据库是 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()"
提前致谢!
【问题讨论】:
标签: mongodb backup mongodump mongorestore mongodb-oplog