gpt4 book ai didi

MongoDB,mongorestore : "Can only replay oplog on full restore"

转载 作者:可可西里 更新时间:2023-11-01 10:31:28 25 4
gpt4 key购买 nike

我在恢复转储和重播 MongoDB 上的操作日志时遇到了一些问题。

我必须重播 oplog 到某个时间点,因此发出以下命令:

mongorestore --port <n> --db <name> --oplogReplay --oplogLimit <ts> <dumpfile>

但是 mongorestore 回复“Can only replay oplog on full restore”。

<罢工> Looking at the source code当用户未指定 --db 选项时似乎会显示此错误消息,但我指定了。

您知道还有什么原因吗?

最佳答案

我认为这是相反的问题 - 使用 oplog 选项时不能指定数据库。您找到的代码:

 if (mongoRestoreGlobalParams.oplogReplay) {
// fail early if errors

if (toolGlobalParams.db != "") {
toolError() << "Can only replay oplog on full restore" << std::endl;
return -1;
}

当您同时指定 oplogReplay 和数据库时触发。

请记住,oplog 是针对整个 mongodb 实例的,而不是针对特定数据库的。我相信使用 --oplog 进行 mongodump 会转储整个实例,因此不能将其重新加载到一个数据库中。

它的文档很少。 Mongolab 在他们的文档中提到了它:

Point-in-time method

Applicable to Dedicated plans only

If you have a Dedicated plan, you can take server-wide mongodumps to export all of the databases on the server.

This method is useful because it allows you to use the the --oplog and --oplogReplay options to mongodump and mongorestore (respectively). The options allow for a point-in-time snapshot of the server by also including the oplog in the dump. This oplog is then replayed when you use the --oplogReplay option upon restore.

但不是很清楚。

关于MongoDB,mongorestore : "Can only replay oplog on full restore",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23643683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com