В MongoDB, mongorestore: "могу только повторить oplog на полное восстановление"
У меня возникли некоторые проблемы при восстановлении дампа и воспроизведение в MongoDB oplog.
Я должен воспроизвести оплог до определенного момента времени, выдав таким образом следующую команду:
mongorestore --port <n> --db <name> --oplogReplay --oplogLimit <ts> <dumpfile>
Но mongorestore ответов "может только анализировать oplog на полное восстановление".
глядя на исходный код , кажется, что это сообщение об ошибке отображается, когда пользователь не указывает параметр --db, но я это сделал.
Знаете ли вы, что еще может быть причина?
1 ответ:
Я считаю, что это противоположная проблема - вы не можете указать базу данных при использовании опции 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, а не для конкретной базы данных. Я считаю, что использование mongodump с помощью -- oplog приведет к дампу всего экземпляра, и поэтому он не может быть повторно загружен только в одну базу данных.
Это довольно плохо документировано. 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.