MongoDB - 使用oplog在不同主机,db之间转储和恢复

时间:2015-09-02 23:41:41

标签: mongodb mongodump mongorestore

是否可以将mongodump和mongorestore存储到具有不同数据库名称的不同主机,并启用oplog?

  

发件人:mongodb:// user:password @ source-hostname:source-port / db1

     

To:mongodb:// user:password @ dest-hostname:dest-port / db5

当我在源MongoDB上使用oplog执行mongodump时,需要转储整个数据库。

mongodump --oplog --host <source-hostname> -u <user> -p <password> --port <source-port> --authenticationDatabase admin

现在进行还原,我想恢复到不同的主机名,db-name也不同。有没有办法使用oplogReplay将数据恢复到此数据库?

mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay --db <db5> <path-to-dump>/dump

如果我使用oplogReplay,我收到以下错误

Can only replay oplog on full restore

我不想进行完全恢复,因为它会将db-name创建为db1,而我想使用db5。此外,此目标主机上已存在多个DB,我不想使用其他新数据库进行轰炸。

有关此问题的任何建议吗?

1 个答案:

答案 0 :(得分:3)

您不能同时使用两个选项 - oplogReplay - db 。 如果您不想恢复整个数据库,只需转到dump /文件夹并删除db5以外的数据库。然后在没有 - db

的情况下重试 mongorestore
mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay <path-to-dump>/dump

如果这对您不起作用,您可能需要将oplog集合导入临时数据库,并对其进行操作以删除除db5之外的所有记录。