是否可以将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,我不想使用其他新数据库进行轰炸。
有关此问题的任何建议吗?
答案 0 :(得分:3)
您不能同时使用两个选项 - oplogReplay 和 - db 。 如果您不想恢复整个数据库,只需转到dump /文件夹并删除db5以外的数据库。然后在没有 - db :
的情况下重试 mongorestoremongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay <path-to-dump>/dump
如果这对您不起作用,您可能需要将oplog集合导入临时数据库,并对其进行操作以删除除db5之外的所有记录。