我需要能够从备份中恢复单个数据库,甚至是单个集合。由于mongodump --oplog
仅适用于完整实例(副本集),因此我进行了以下过程以仅过滤要从 --oplog 选项生成的 oplog.bson 还原的数据库中的条目。有人可以告诉我这是正确的还是我遗漏了什么?
首先我只恢复我需要的数据库(在这个例子中数据库是测试)
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()"
提前致谢!