MongoDB - 跨不同主机转储和恢复,带 oplog 的数据库

MongoDB - dump and restore across different host, db with oplog

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

From: 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

现在恢复,我想恢复到不同的主机名,数据库名也不同。有没有办法用 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

我不想进行完全还原,因为它会将数据库名称创建为 db1,而我想使用 db5。另外,这个目标主机上已经有多个数据库,我不想用另一个新数据库轰炸。

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

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

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

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