2014-05-14 3 views
2

У меня возникли проблемы с восстановлением дампа и повторным воспроизведением oplog на MongoDB.MongoDB, mongorestore: «Можно только перезаписать oplog при полном восстановлении»

Я должен повторить oplog до определенного момента времени, таким образом, выполнив следующую команду:

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

Но mongorestore отвечает «Могу только повторить oplog на полное восстановление».

Looking at the source code похоже, что это сообщение об ошибке отображается, когда пользователь не указывает параметр -db, но я это сделал.

Вы знаете, что еще может быть причиной?

ответ

2

Я считаю, что это противоположная проблема - вы не можете указать базу данных при использовании опции 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. 

но это не очень понятно.

+0

Да, действительно, код говорит об этом. Думаю, в 2 часа утра я просто устал читать его. Теперь mongorestore говорит мне, что дамп не был взят с флагом -oplog, я думаю, что-то еще пошло не так. Спасибо за ответ! – stefanobaghino

Смежные вопросы