Как говорится об ошибках, база данных требует ремонта, потому что она находится в inconsistent state
из-за какой-либо операции, вызванной unexpected shutdown
.
В MongoDB WriteConcern
обеспечивает обратную связь/подтверждение в ответ на операцию записи. Существует несколько уровней WriteConcerns или гарантирует, что операция записи была успешной или нет. В WriteConcerns
уровни являются следующие: (. Клиент ждет успех или исключения АСК записи оп)
- подтверждён (клиент не ожидает подтверждения записи оп)
- ПРИЗНАВАЕМЫХ
- Journaled (MongoDB посылает только подтверждение после совершения записи в журнале)
- реплики Подтверждено (извед. от записи оп на первичной и/или других членов набора реплик)
Вы можете установить уровни WriteConcerns
на любой уровень в зависимости от важности операции записи.
WriteConcern
в вашем случае возвращает исключение, указывающее, что база данных находится в несогласованном состоянии, может/не могла быть повреждена данные. Чтобы вернуться в рабочий режим, вам необходимо восстановить базу данных одним из многих способов.
- Via MongoDB оболочки (если вы можете подключиться к MongoDb)
- через командную строку с
mongod
см ниже
Если вы можете получить в MongoDB оболочку, то вам нужно найти базу данных и ремонт она, как следовать
use dbName
db.repairDatabase() //repairs the above database
Если вы не можете получить в MongoDB оболочки или хотите использовать другой метод, то вы можете использовать следующие методы
файлы Ремонт данных и сохранить исходные файлы
mongod --dbpath /data/db --repair --repairpath /data/db0
mongod --dbpath /data/db0
После первой команды над полным, недавно отремонтированные данные будут находиться под /data/db0
каталога, и вы можете использовать вторую команду, чтобы начать MongoDB используя восстановленные данные. Исходные файлы данные сохраняются в стандартном /data/db
или другое месте (если не по умолчанию)
файлов Ремонт данных без сохранения исходных файлов
Этого метода вы только поставить --repair
и не --repathpath
и он будет пытаться восстановить исходные файлы данных.Во-первых, вы должны удалить файл mongod.lock
, шаги являются следующие:
rm /data/db/mongod.lock
Если предположить, что данные в/данных/директории БД, если не указать местоположение.
mongod --dbpath/данные/дб --repair
Start mongod только --repair
вариант, вы не должны пройти --repairpath
вариант. Это попытается восстановить данные. Тогда, наконец, запустить базу данных
mongod --dbpath/данные/дб
Если следовать первому методу ремонта, то вы можете удалить mongod.lock
после ремонта успешен. Если вы следуете второму методу, вы можете удалить его mongod.lock
перед выполнением операции восстановления.
Прочтите documentation как безопасно завершить работу базы данных, что находится в mongod.lock? Как вы должны выполнить ремонт (например, запустить его с тем же пользователем, чтобы сохранить право собственности на файл). Также возможно, что разрешения на ваши файлы данных были изменены, вы можете вернуть их обратно, см. Это question для получения более подробной информации.
Вы пытались восстановить базу данных? – Raf