Назад | Перейти на главную страницу

Лучшие практики MongoDB против постоянных сбоев питания

Задний план:

У меня есть несколько машин-приложений AIO (запуск ubuntu с rails + mongodb + chromium) на одной машине на мобильном тренере для отображения информации, иногда пользователь может изменить chuck в некоторых данных на mongodb.

Теперь питание машины постоянное, водитель автобуса может выключить машину в любой момент. машина имеет 2 раздела, первый - aufs для /, другой - ext4 для каталога mongodb / data. НО в момент отключения электроэнергии в базу данных не поступают данные.

Проблема:

Каждый раз, когда машина перезагружается из-за отключения электроэнергии (каждые несколько часов), mongodb оставляет файл mongod.lock в своем каталоге. в /etc/rd.local я пытался удалить файл блокировки при каждой загрузке, но он иногда все равно отказываюсь заводиться. из-за чего мое приложение не запускается.

Согласно официальным документам: http://www.mongodb.org/display/DOCS/Durability+and+Repair , Я все еще не могу запустить.

Как лучше всего запускать mongodb в случае регулярного сбоя питания, как указано выше? Не закидывая доп.

В первую очередь пожалуйста ЧИТАТЬ благословенная документация вы связались с:

mongod.lock
Не удаляйте файл mongod.lock. Если mongod не запускается, воспользуйтесь одним из описанных выше методов, чтобы исправить ситуацию.

Удаление файла блокировки позволит запустить базу данных, когда ее данные могут быть повреждены. В общем, никогда не следует принудительно запускать базу данных с возможно поврежденными данными. В экстренной ситуации вы можете удалить файл блокировки, чтобы вытащить с сервера все возможные данные. Если вы когда-либо вручную удаляли файл блокировки и запускали резервное копирование сервера, вам не следует считать этот сервер «исправным».

Следуйте процедурам, изложенным в благословенная документация, на которую вы ссылались для восстановления после сбоев питания.


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

Все mongod.lock файл сообщает вам, что БД была отключена некорректно, т.е. не была остановлена ​​администратором и т. д.

При запуске --repair Сама по себе операция mongod попытается прочитать существующие файлы, записать новые файлы, а затем поменять их местами. После завершения он должен удалить файл mongod.lock и позволить вам запустить базу данных.

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

Возможный поток работы с --repairpath:

  1. Запуск службы, сообщение журнала информирует вас о проблеме с блокировкой, завершается.

    mongod --dbpath=/data/db
    
  2. Вы запускаете команду восстановления, подобную этой:

    mongod --dbpath=/data/db --repair --repairpath=/data/db2
    

    и дождитесь его завершения.

  3. После завершения запустите mongod с пути к восстановленным файлам:

    mongod --dbpath=/data/db2
    
  4. После подтверждения работы вы можете удалить /data/db каталог, если хотите.

Все это, вероятно, можно устранить, "заменив" файлы в /data/db/ не используя параметр --repairpath.

Что касается восстановления, взгляните на Ведение журнала - это создает журнал операций, который сбрасывается на постоянный диск каждые 100 мсек, а когда mongod запускается, обнаруживает непримененные файлы журнала и применяет их, удаляет файл блокировки и запускает сервер.