如何使用oplogReplay恢复单个mongodb数据库?

时间:2015-05-14 13:12:45

标签: mongodb mongodump mongorestore

我很难发现这是否是支持的操作。我找到的东西表明它没有用,但是我没有得到任何表明它不受支持的日志(只是混淆日志)而且我找不到任何东西在mongo的文档中表明它不被允许。

供参考:

  • OS:Centos6.6
  • Mongod:v3.0.2
  • Mongo Shell:v3.0.2
  • Mongodump:v3.0.2
  • Mongorestore:v3.0.2

这是我正在运行以创建转储的命令(我正在使用auth):

mongodump -u username -p password --authenticationDatabase admin --oplog

这是转储后的原始文件结构。

└── dump
    ├── oplog.bson
    ├── admin
    │   ├── system.users.bson
    │   ├── system.users.metadata.json
    │   ├── system.version.bson
    │   └── system.version.metadata.json
    ├── dogs
    │   ├── tails.bson
    │   └── tails.metadata.json
    └── mydata
        ├── objects.bson
        ├── objects.metadata.json
        ├── fs.chunks.bson
        ├── fs.chunks.metadata.json
        ├── fs.files.bson
        ├── fs.files.metadata.json
        ├── configuration.bson
        └── configuration.metadata.json

我已经尝试了一些不同的恢复版本来获得我想要的东西,但它们每个看起来都有点偏差。在mongo关于mongorestore的文档中阅读以下内容后:

  

- db不控制mongorestore恢复哪些BSON文件。您必须使用mongorestore路径选项来限制已还原的数据。

在我看来,我应该能够将oplog.bson复制到我想要恢复的特定数据库文件夹中,然后从dump /中运行以下命令:

mongorestore -u username -p password --authenticationDatabase admin --oplogReplay --db dogs dogs

我发现这令人困惑,因为它提供了这些日志:

2015-05-13T22:10:12.694+0000    building a list of collections to restore from dogs dir
2015-05-13T22:10:12.695+0000    reading metadata file from dogs/tails.metadata.json

2015-05-13T22:10:12.695+0000    restoring dogs.oplog from file dogs/oplog.bson
2015-05-13T22:10:12.696+0000    no indexes to restore
2015-05-13T22:10:12.696+0000    finished restoring dogs.oplog

2015-05-13T22:10:12.696+0000    restoring dogs.tails from file dogs/tails.bson
2015-05-13T22:10:12.697+0000    restoring indexes for collection dogs.tails from metadata
2015-05-13T22:10:12.697+0000    finished restoring dogs.tails

2015-05-13T22:10:12.697+0000    replaying oplog
2015-05-13T22:10:12.697+0000    no oplog.bson file in root of the dump directory, skipping oplog application

2015-05-13T22:10:12.697+0000    done

关于dogs.oplog的第一部分看起来似乎有些事情正在发挥作用,但后来有关oplog的消息让我感到困惑。

无论我尝试哪些目录和路径的变化,我都似乎无法满足这条消息:

2015-05-13T22:10:12.697+0000    replaying oplog
2015-05-13T22:10:12.697+0000    no oplog.bson file in root of the dump directory, skipping oplog application

这是否意味着我的oplog重播没有发生?我的时间点备份/恢复是否仍然按照我的预期进行?我记得看到一些关于改善mongotools日志消息的门票,也许这只是糟糕的日志记录?

0 个答案:

没有答案