MongoDB внезапно перестал работать сегодня (12.04)

После обновления до 12.04 месяц или два назад я установил MongoDB через APT. С тех пор это работало хорошо. Я не внес никаких изменений в конфиг или что-то еще - он просто работал из коробки.

Сегодня это не началось, когда я вошел в систему, у меня внезапно произошла ошибка «не удалось подключиться к любому серверу в списке» в моем приложении, и я проверил, и mongod не работал.

ls -al /var/lib/mongodb

Показывает нет *.lock файлов.

$ /etc/init.d/mongodb start
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service mongodb start

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the start(8) utility, e.g. start mongodb
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.89" (uid=1000 pid=4284 comm="start mongodb ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Затем я попытался sudo mongod --repair

Mon Aug 13 12:16:48 [initandlisten] MongoDB starting : pid=4350 port=27017 dbpath=/data/db/ 64-bit host=computer-localhost
Mon Aug 13 12:16:48 [initandlisten] db version v2.0.4, pdfile version 4.5
Mon Aug 13 12:16:48 [initandlisten] git version: nogitversion
Mon Aug 13 12:16:48 [initandlisten] build info: Linux yellow 2.6.24-29-server #1 SMP Tue Oct 11 15:57:27 UTC 2011 x86_64 BOOST_LIB_VERSION=1_46_1
Mon Aug 13 12:16:48 [initandlisten] options: { repair: true }
Mon Aug 13 12:16:48 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db/) does not exist, terminating
Mon Aug 13 12:16:48 dbexit: 
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close listening sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to flush diaglog...
Mon Aug 13 12:16:48 [initandlisten] shutdown: going to close sockets...
Mon Aug 13 12:16:48 [initandlisten] shutdown: waiting for fs preallocator...
Mon Aug 13 12:16:48 [initandlisten] shutdown: lock for final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: final commit...
Mon Aug 13 12:16:48 [initandlisten] shutdown: closing all files...
Mon Aug 13 12:16:48 [initandlisten] closeAllFiles() finished
Mon Aug 13 12:16:48 dbexit: really exiting now

Есть идеи, что случилось?

Обновление

Итак, я попытался sudo service mongodb start, и это наконец-то началось (Я пробовал это несколько раз раньше)

mongodb start/running, process 4376
8
задан 13 August 2012 в 21:20

4 ответа

Диагностика

Первое, что нужно сделать, - это проверить файлы журнала MongoDB, чтобы выяснить, почему служба не запустилась. Запустите:

tail -f /var/log/mongodb/mongodb.log

в одном окне терминала и затем выполните:

sudo service mongodb restart

в другом. В файле журнала должна отображаться попытка запуска MongoDB и сообщение об ошибке в случае сбоя.

Восстановление

Если в журналах указано, что вам нужно восстановить базу данных, следует помнить о двух моментах:

  1. По умолчанию mongod ожидает файлы базы данных. находиться в /data/db/, но пакеты Ubuntu настраивают его для просмотра в /var/lib/mongodb/. Поэтому, если вы запускаете mongod напрямую, а не с помощью сценариев выскочки, вам нужно сообщить ему, где находятся файлы вашей базы данных, добавив аргумент --dbpath.
  2. При запуске mongod с использованием upstart он будет работать как пользователь mongodb, который является пользователем, которому принадлежат файлы базы данных. Если вы запустите mongod, используя sudo без указания пользователя, вы получите файлы базы данных, принадлежащие root. Поэтому вам нужно добавить аргумент -u в sudo.

Если ваши файлы базы данных в настоящее время принадлежат root, вам необходимо изменить их владельца обратно на mongodb, прежде чем MongoDB сможет использовать их снова:

sudo chown -R mongodb:mongodb /var/lib/mongodb/

TL; DR

]

Чтобы запустить восстановление в MongoDB при использовании упакованного дистрибутива, необходимо выполнить:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
0
ответ дан 13 August 2012 в 21:20

У меня также была похожая проблема с запуском mongod.exe на моей машине (установка Windows). Это был файл .lock в C:\data\db, который вызывал проблему. Я удалил этот файл, и проблема была решена.

0
ответ дан 13 August 2012 в 21:20

У меня тоже была такая же проблема, и я ее решил. Когда я попытался запустить mongodb с sudo, он показал, что процесс уже запущен (mongodb start/running, process xxxx). Но я не могу получить доступ к запущенному экземпляру через оболочку. Он показал сбой соединения .

Решение

Поэтому я удалил файл блокировки:

sudo rm /var/lib/mongodb/mongod.lock

Затем перезапустил службу:

sudo service mongodb start

Затем Монго снова работал на моей машине!

0
ответ дан 13 August 2012 в 21:20

Была похожая проблема, причина была довольно глупой; Мне не хватило места на диске.

Проверяя журналы на /var/log/mongodb/mongod.log, я заметил следующую строку:

2015-04-13T10:56:37.132+0200 [initandlisten] ERROR: Insufficient free space for journal files

Надеясь, что это спасет кого-то полчаса их жизни.

0
ответ дан 13 August 2012 в 21:20

Другие вопросы по тегам:

Похожие вопросы: