2015-05-03 2 views
1

Я запускаю mongoDB на локальной машине с включенным журналом.MongoDB после отключения питания

Всегда ли гарантируется, что mongo автоматически восстановится даже при отключении электроэнергии (что означает, что база данных не была закрыта должным образом), когда ведение журнала включено?

В каких сценариях MongoDB будет поврежден, даже если журналирование включено (помимо повреждения файловой системы)?

+1

Это скорее вопрос для http://dba.stackexcgange.com. Проголосовал за закрытие, поскольку DO посвящена вопросам, связанным с программированием. –

ответ

1

Да, это гарантировано (при условии отсутствия файловой системы с коррупцией):

С поддержкой журналирования, MongoDB создает журнал подкаталог внутри каталога, определяемого DBPATH, что/данные/дб по умолчанию. В каталоге журнала хранятся файлы журналов, которые содержат журналы повторного ввода. В каталоге также содержится файл с последней последовательностью. Чистое выключение удаляет все файлы в каталоге журнала. Грязное выключение (сбой) оставляет файлы в каталоге журнала; они используются для автоматического восстановления базы данных в согласованное состояние, когда процесс mongod перезапускается.

(Journaling/ядро ​​/ журналируемое в руководстве)

Это большая точка для ведения журнала, в первую очередь, и один из первичной причины журнального используются. Данные заметки по-прежнему будут потеряны (с последних 100 мс или около того), но БД будет в согласованном состоянии.

+3

@ Трансцендентность да да, мы все любим себя некоторыми монгольскими избиениями, избавляем меня от ссылки «Веб-масштаб». То, что манго утверждало и оказалось ложным, было в основном сложными вариантами использования кластеров, осколков и репликации - в отличие от согласованности с византийскими неудачами на больших кластерах с большим количеством чтений и писем, просто восстановление последовательного состояния из журнала, безусловно, является чем-то Монго сможет сделать. –

+1

По моему опыту, потеря данных больше похожа на 50 мс (медиана), при этом 100 мс является самым редким случаем. Во всяком случае, как и всегда для серверов баз данных, они должны поддерживаться независимым источником питания. Все остальное является халатным, ненадлежащим и непрофессиональным, что делает вопрос академическим и немного бессмысленным. –

+0

@MarkusWMahlberg это не бессмысленно, я определенно согласен в целом, я никогда не видел потери данных 100 мс, когда я тестировал его, но это то, что гарантирует двигатель, поэтому это обязательство, которое я даю. Само собой разумеется, что все должно быть скопировано и реплицировано, но я предполагаю, что OP использует Mongo в качестве клиентского хранилища здесь (например, для резервного копирования настольного приложения), а не как сервер БД (a la Mongo as SQLite) поэтому я бы не стал допустить, чтобы это было «ненадлежащим и непрофессиональным», если ваша игра-хранилище или настройки или другие клиентские вещи имеют задержку в 100 мс. Тем не менее гораздо надежнее, чем файлы. –

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