Запуск mongod с параметром --nojournal удаляет существующие файлы журнала?

Сбой MongoDB произошел из-за ошибки нехватки памяти, возникшей при попытке добавления в файл журнала. В тот момент мой файл mongod.lock был пуст. Я перезапустил Mongod без каких-либо вариантов. Он принимал соединения нормально. Затем я запустил mongo.exe, но не смог подключиться к БД. Он застрял на "подключение к тесту", но никогда не подключался успешно.

Я закончил этот процесс и перезапустил mongod с опцией --nojournal. Но это тоже не помогло.

Но теперь я вижу файл mongod.lock не пустой. Также все мои записи в журнале удаляются.

Вопрос в том, удаляет ли опция --noJournal существующие записи журнала? Кроме того, есть ли способ восстановить записи журнала?

1 ответ

Решение

Восстановление после аварии

Во-первых, пожалуйста, прочитайте эту статью:

Восстановить данные после неожиданного завершения работы

После сбоя у вас есть два варианта:

  • если это отдельный экземпляр, запустите mongod с --repair вариант;
  • если экземпляр является частью набора реплик, удалите все данные и либо восстановите его из резервной копии, либо выполните первоначальную синхронизацию с другим членом набора реплик.

Опция --nojournal

Бег mongod --nojournal не удалит файлы журнала. По факту, mongod даже не запустится, если есть файлы журнала. Это даст вам следующее сообщение и закроется.

Error: journal files are present in journal directory, yet starting without journaling enabled.
It is recommended that you start with journaling enabled so that recovery may occur.
exception in initAndListen: 13597 can't start without --journal enabled when journal/ files are present, terminating

Если вы тогда бежите mongod без --nojournal Опция, он будет применять все изменения, сохраненные в файлах журнала и удалять файлы. Только тогда вы можете перезапустить его с --nojournal,

Я считаю, что это то, что произошло в вашем случае. Вам не нужно пытаться восстановить файлы журнала, так как они уже применены к вашим данным.

Другие вопросы по тегам