Нормально ли, что MongoDB whole / data / db отключается после отключения электричества, которое приводит к сбою

#mongodb

#mongodb — монгодб #mongodb

Вопрос:

У меня есть единственная машина, на которой установлен MongoDB, и ее данные, как обычно, находятся в /data /db.

Когда моя машина вышла из строя из-за отключения электроэнергии, мой MongoDB отказывается запускаться при запуске (сервер Mac OS X через LaunchAgent), а также / data / db таинственным образом исчезают!

Также все файлы журнала будут уничтожены. Это произошло на моем MBA по разработке SSD, и я подумал, что это просто странный корпус SSD. Но мой сервер XServe также получает это при отключении питания.

Я где-то пропустил какие-то статьи о защите данных? Наверняка это не может быть настолько ненадежно, просто удалив /data / db !!??

Ответ №1:

MongoDB никогда не удалит файлы вашей базы данных!

В случае сбоя вы должны запустить mongod, используя опцию —repair .

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

Комментарии:

1. кажется, еще одна катастрофа mongo: (

2. Нет, пахнет городской легендой.

3. Спасибо за информацию о версии 1.8. Я использую 1.6. И нет, это не городская легенда, я только что столкнулся с этим и потрясен, увидев, что мой / data / db полностью исчез после отключения питания (резервуар для охлаждения воды). Я здесь не для того, чтобы что-то распространять, пожалуйста 🙂

4. Извините, что это выглядит как городская легенда. На самом деле я понял, что это моя ошибка. Я использую Homebrew, и его конфигурационный файл указывает dbpath на другой, чем /data / db

Ответ №2:

Нет, это ненормально.

Если он не запускается, вероятно, mongodb указывает, что вам нужно выполнить ремонт, потому что mongod.блокировка присутствует и имеет определенное состояние в / data / db. Но это означало бы, что / data / db существует.

Если / data / db существует, но был пуст (что в данном случае, очевидно, было бы плохо), он запустился бы сразу.

Если ваши журналы отсутствуют, это звучит как более общая проблема с диском.

Поэтому проверьте сообщение о запуске, если речь идет о mongod.заблокируйте там данные. Также с версией v1.8 используйте ведение журнала. (хотя вы не потеряете все файлы данных даже без ведения журнала)

Комментарии:

1. отличный ответ, но я копирую / вставляю информацию ниже, все ли это правильно? (1) mongodb не обладает надежностью журнала отката… если узел по какой-либо причине выходит из строя нечисто, вы больше не можете доверять данным на нем и должны перестроить узел из копии. Это действительно непростая ситуация. Однократное отключение питания по всему сайту может привести к тому, что все данные окажутся в ненадежном состоянии. Лучше иметь хорошие резервные копии. (2) mongodb представляет собой кучу b-дерево и, следовательно, не оптимизирован для записи…… Поскольку рабочий набор превышает размер памяти, производительность случайной записи mongodb будет ближе к innodb / mysql…..

2. Да, хороший совет и спасибо за информацию о 1.8. Любое объяснение того, почему весь / data / db может исчезнуть. Я думаю, что мой XServe — это RAID с диском SCSI. И теперь они работают нормально после отключения питания.

3. Спасибо. Я понял, что использую Homebrew, и его конфигурационный файл помещает dbpath в другой путь, а не в обычный / data / db