作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
是否可以使用 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 记录之外的所有记录。
关于MongoDB - 跨不同主机转储和恢复,带 oplog 的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32364859/
我是一名优秀的程序员,十分优秀!