mongodump --oplog和每个数据库恢复

时间:2017-10-09 15:01:08

标签: mongodb backup mongodump mongorestore mongodb-oplog

我需要能够恢复 单个数据库,甚至是备份中的单个集合。由于mongodump --oplog仅适用于完整实例(副本集),因此我做了以下过程,仅过滤我想要从 oplog.bson 生成的数据库中的条目。 --oplog选项。 有人能告诉我这是否正确或者我是否遗漏了什么?

  1. 首先我只恢复我需要的db(这个例子中的db是 test

      

    mongorestore -d test dump/test

  2. 将--oplog选项生成的 oplog.bson 文件恢复为随机集合

      

    mongorestore -d oplog -c oplog dump/oplog.bson

  3. 从已恢复的 oplog.bson 集合转储仅引用我正在恢复的数据库的文档

      

    mongodump -d oplog -c oplog -q "{ns:/^test[.]/}" -o oplog

  4. 使用带有过滤操作的最后一次转储使用--oplogReplay选项进行恢复

      

    mongorestore --oplogReplay oplog/oplog

  5. 最后我删除了临时的oplog集合。

      

    mongo --eval "db.getSisterDB('oplog').dropDatabase()"

  6. 提前致谢!

1 个答案:

答案 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转储文件,您可以阅读