служба mongodb не запускается - PullRequest
64 голосов
/ 27 марта 2012

Я установил mongodb 2.0.3, используя пакет debian mongodb-10gen.Все прошло хорошо, за исключением того, что служба, которая установлена ​​по умолчанию, не запускается при запуске компьютера.mongod работает только как пользователь root.может быть в этом причина.но, насколько мне известно, службы должны работать, поскольку они добавляются пользователем root.

В чем может быть решение?

, если я запускаю только mongod

Tue Mar 27 13:00:44 [initandlisten] couldn't open /data/db/transaction_processor_dummy_development.ns errno:1 Operation not permitted

Если я запускаю sudo service mongodb start, он говорит:

mongodb start/running, process 4861

, но при просмотре с htop и mongo нет никакого процесса:

MongoDB shell version: 2.0.3
connecting to: test
Tue Mar 27 13:02:40 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84
exception: connect failed

Ответы [ 17 ]

109 голосов
/ 23 января 2013

На моем сервере Ubuntu просто запустите:

sudo rm /var/lib/mongodb/mongod.lock
mongod --repair
sudo service mongodb start
30 голосов
/ 28 марта 2012

Исправлено!

Причиной была переменная dbpath в /etc/mongodb.conf. Ранее я использовал mongodb 1.8, где значение по умолчанию для dbpath было /data/db. Задание upstart mongodb (которое поставляется с пакетом mongodb-10gen) вызывает параметр mongod с --config /etc/mongodb.conf.

В качестве решения мне нужно было только рекурсивно сменить владельца каталога /data/db.

26 голосов
/ 20 января 2016

Это также может произойти, если ваши права доступа к файлам будут изменены. Удаление файла блокировки не помогло, и мы получили ошибки в файле журнала, такие как:

2016-01-20T09:14:58.210-0800 [initandlisten] warning couldn't write to / rename file /var/lib/mongodb/journal/prealloc.0: couldn't open file    /var/lib/mongodb/journal/prealloc.0 for writing errno:13 Permission denied
2016-01-20T09:14:58.288-0800 [initandlisten] couldn't open /var/lib/mongodb/local.ns errno:13 Permission denied
2016-01-20T09:14:58.288-0800 [initandlisten] error couldn't open file /var/lib/mongodb/local.ns terminating

Итак, пошли проверять разрешения:

ls -l /var/lib/mongodb

total 245780
drwxr-xr-x 2 mongodb mongodb     4096 Jan 20 09:14 journal
drwxr-xr-x 2 root    root        4096 Jan 20 09:11 local
-rw------- 1 root    root    67108864 Jan 20 09:11 local.0
-rw------- 1 root    root    16777216 Jan 20 09:11 local.ns
-rwxr-xr-x 1 mongodb nogroup        0 Jan 20 09:14 mongod.lock

Исправить:

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

Удалить файл блокировки, если он все еще там:

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

Старт mongodb

# service mongodb start

Хвост бревно, и вы должны увидеть в конце:

tail -f /var/log/mongodb/mongodb.log
2016-01-20T09:16:02.025-0800 [initandlisten] waiting for connections on port 27017
19 голосов
/ 30 апреля 2014

Мне было надоело этой проблемы, поэтому я решил создать сценарий оболочки для легкого восстановления базы данных mongo.

#!/bin/sh
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo service mongodb start

http://ideone.com/EuqDZ8

12 голосов
/ 27 марта 2012

Помните, что при перезапуске базы данных путем принудительного удаления файлов .lock данные могут быть повреждены. Ваш сервер не должен считаться «исправным», если вы перезапустили сервер таким образом.

Чтобы исправить ситуацию, либо наберите

mongod --repair

или

> db.repairDatabase();    

в оболочке mongo, чтобы вернуть вашу базу данных в "здоровое" состояние.

10 голосов
/ 26 апреля 2013

1 - отключить fork параметр в /etc/mongodb.conf, если включено

2 - Восстановление базы данных

mongod --repair --dbpath DBPATH

3 - убить текущий процесс mongod

Найти процессы монго

ps -ef | grep mongo

вы получите PID mongod

mongodb   PID     1  0 06:26 ?        00:00:00 /usr/bin/mongod --config /etc/mongodb.conf

Остановить текущий процесс Mongod

kill -9 PID

4 - запуск службы mongoDB

service mongodb start
6 голосов
/ 02 июня 2015

Для ubunto, то, что сделало это и было очень просто, это установить пакет mongodb:

sudo apt-get install  mongodb
5 голосов
/ 27 марта 2012

Иногда вам нужно удалить файл .lock, чтобы запустить службу

3 голосов
/ 30 декабря 2014

Это также может произойти, если диск заполнен по вашему пути logpath (например, если у вас есть выделенный каталог / диск /log/, и он заполнен).

Это заставило меня паниковать в течение хороших 15 минут, потому что это также мешает вам прочитать mongod.log при запуске процесса, что очень трудно устранить.

3 голосов
/ 17 марта 2013

Решение Nianliang оказалось настолько полезным из моего Vagrant ubunuto, что в итоге я добавил эти 2 команды в мой файл /etc/init.d/mongodb:

.
.
.    
start|stop|restart)
        rm /var/lib/mongodb/mongod.lock
        mongod --repair
.
.
.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...