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

8

После того, как я обновился до 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
Xeoncross
источник

Ответы:

13

диагностика

Первое, что нужно сделать, это проверить файлы журнала 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/
Дэвид Эдвардс
источник
4

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

Решение

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

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

Затем я перезапустил сервис:

sudo service mongodb start

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

Дамодаран
источник
0

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

Джордж Джозеф
источник
0

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

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

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

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

Edo
источник