2

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

  1. 首先我只恢复我需要的数据库(在这个例子中数据库是测试)

    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()"

提前致谢!

4

1 回答 1

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转储文件,你可以读回什么

于 2017-10-10T08:56:52.573 回答