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 记录以外的所有记录。
是否可以使用 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:
的情况下重试 mongorestoremongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay <path-to-dump>/dump
如果这对您不起作用,您可能需要将 oplog 集合导入临时数据库,并对其进行操作以删除 db5 记录以外的所有记录。