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