2

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

来自:mongodb://user:password@source-hostname:source-port/db1

到: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。此外,此目标主机上已经有多个数据库,我不想用另一个新数据库轰炸。

关于这个问题有什么建议吗?

4

1 回答 1

3

您不能同时使用两个选项--oplogReplay--db。如果您不想恢复完整的 DB,只需转到 dump/ 文件夹并删除 db5 以外的 DB 文件。然后在没有--db的情况下重试mongorestore

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

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

于 2015-09-03T00:01:47.823 回答