MongoDB не запускається після зміни каталогу даних


10

Я встановив mongodbекземпляр за допомогою yum. . Зараз все працює добре. Я почав послугу з використання service mongod start. Це добре працює. Потім я змінив data directoryі log pathв конфігураційному файлі. Я знову перезапустив сервер і запустив службу. Але я отримую нижче помилку:

Restarting mongod (via systemctl):  Job for mongod.service failed. See 'systemctl status mongod.service' and 'journalctl -xn' for details.
                                                           [FAILED]

Коли я даю, systemctl status mongod.serviceя отримую нижче:

 Loaded: loaded (/etc/rc.d/init.d/mongod)
   Active: failed (Result: exit-code) since Wed 2015-03-18 11:35:56 IST; 22s ago
  Process: 10672 ExecStop=/etc/rc.d/init.d/mongod stop (code=exited, status=0/SUCCESS)
  Process: 10841 ExecStart=/etc/rc.d/init.d/mongod start (code=exited, status=1/FAILURE)
 Main PID: 10509 (code=exited, status=0/SUCCESS)

Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
Mar 18 11:35:56 localhost systemd[1]: Unit mongod.service entered failed state.

Коли я даю, journalctl -xnя отримую нижче:

-- Logs begin at Wed 2015-03-18 08:56:56 IST, end at Wed 2015-03-18 11:35:56 IST. --
Mar 18 11:30:01 localhost systemd[1]: Starting Session 20 of user root.
-- Subject: Unit session-20.scope has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has begun starting up.
Mar 18 11:30:01 localhost systemd[1]: Started Session 20 of user root.
-- Subject: Unit session-20.scope has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit session-20.scope has finished starting up.
-- 
-- The start-up result is done.
Mar 18 11:30:01 localhost CROND[10712]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Mar 18 11:35:56 localhost systemd[1]: Starting SYSV: Mongo is a scalable, document-oriented database....
-- Subject: Unit mongod.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mongod.service has begun starting up.
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session opened for user mongod by (uid=0)
Mar 18 11:35:56 localhost runuser[10850]: pam_unix(runuser:session): session closed for user mongod
Mar 18 11:35:56 localhost mongod[10841]: Starting mongod: [FAILED]
Mar 18 11:35:56 localhost systemd[1]: mongod.service: control process exited, code=exited status=1
Mar 18 11:35:56 localhost systemd[1]: Failed to start SYSV: Mongo is a scalable, document-oriented database..
-- Subject: Unit mongod.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel

Хтось може допомогти мені виправити це? Дякую!!!

PS : Створений нами каталог даних містить усі дозволи для користувача. Але знову ж таки, якщо я зміню каталог даних на типовий ( /var/lib/mongodb), він прекрасно працює.

Відповіді:


6

Я зіткнувся з подібною проблемою і виявив, що mongod.confв моєму випадку це неправильно налаштований файл. Можливо, дозволи в новому каталозі встановлені неправильно. chown -R mongod:mongod <directory name>як я забезпечив доступ (і, звичайно, chmod 600 <dir>також). Нарешті, запустіть, ls -Zщоб переконатися, що контекст правильний. Я просто порівняв каталог за замовчуванням, який працював на мене.

Якщо це вже не вирішено, покажіть вміст файлу журналу. Там можуть бути якісь підказки.


4

Розширюючи те, що сказав @mustaccio, відповідь для мене був контекст SELinux на новому logpathі dbpath. Я виконував наступні команди і все було добре:

sudo chcon -Rv --type=mongod_log_t $logpath
sudo chcon -Rv --type=mongod_var_lib_t $dbpath

(це було на RHEL 7.1 btw)


4

У мене це було на Raspberry Pi, а також на моєму сервері Ubuntu.

"Не вдалося виконати роботу для mongod.service. Детальніше див. "Systemctl status mongod.service" та "journalctl -xn". "

У мене виникло це питання з різних причин з різних причин:

  1. Mis-name .conf file - Сценарій mongodb (до якого я перемістився /etc/init.d/mongodb), рядок 57, CONF=/etc/mongod.confколи мій фактичний файл /etc/mongodb.conf. Зміна рядка 57 виправила його. Також я міг змінити назву сценарію так само.

  2. Файл mongod.lock - Востаннє mongod зупинив його, не отримав шанс закрити базу даних. Це залишає файл у папці вашої бази даних під назвою mongod.lock. Всередині папки є номер (я вважаю, це PID, який монго використовував останній). Якщо цей файл існує, ви не зможете запустити службу mongod. Видаліть файл і повторіть спробу.

  3. користувач mongo - мені потрібно було створити користувача Linux, який би відповідав за запуск та запуск служби mongod.service. Я назвав мого монго і оновив свій /etc/init.d/mongodbсценарій, скажімо, рядок 95 для мене DAEMONUSER=${DAEMONUSER:-mongo}. Це, звичайно, спрацює лише в тому випадку, якщо ви створили нового користувача на ім'я mongo (або, що ви хочете, я думаю).

  4. Дозволи DB - це популярне. Після того, як ви оголосите, де буде розташована папка бази даних, вам потрібно переконатися, що користувач 'mongo' має право власності на цей файл. Наприклад, моя база даних зберігається в /data/db. Я запустив таку команду:
    sudo chown –R mongo:mongo /data
    і це перемістило право власності на /dataта всі його підкаталоги на користувача mongo.

  5. Неправильне обслуговування - Це мене трохи бентежило. Я намагався почати mongoслужбу замість цього mongod. mongoце оболонка, яку ви можете запускати та вводити команди вручну прямо до mongo. Ось так я створив свою базу даних і додав, наприклад, кілька об’єктів. mongodз іншого боку - демон mongo, який працює у фоновому режимі, де розміщується ваша база даних для інших програм, які ви пишете / використовуєте для доступу. Переконайтеся, що ви не змішуєте їх ніде у своїх конф-файлах, скриптах тощо.

Сподіваюся, що одне з них вирішить проблему для вас.

Зі сторони, мій mongodb.confфайл порожній. Навіть якщо він порожній, на нього потрібно правильно вказати.


2

Я спробував це, і це спрацювало.

sudo chown -R mongodb:mongodb /var/log/mongodb
sudo chown -R mongodb:mongodb /var/lib/mongodb
sudo chmod -R 755 /var/lib/mongodb
sudo chmod -R 755 /var/log/mongodb

1

Я зіткнувся з цією проблемою модернізації від монго, яке поставляється з Centos 7 Repos, до власних репостів Монгоса. По суті, модернізація з V2 до V3.

Виявляється, що centos 7 repo вимагає користувача mongodb , тоді як mongos власне repo хоче користувача mongod

Зрештою, це файл журналу, який ще існував від старої установки, до якої не вдалося записати нову установку, оскільки імена користувачів були різними, і я цього не помічав.


1

У моїй системі (Fedora) у мене є "/ var / log" на tmpfs (ram), si щоразу, коли я перезавантажую все, що на цьому розділі втрачається. Багато людей до цього ставляться через те, що вони мають накопичувачі SSD і хочуть скоротити введення-вивід (заощаджуючи термін експлуатації диска).

Рішення полягає у створенні каталогу / var / log / mongodb та встановленні mongodb як власника щоразу, коли система перезавантажується.

Використовуйте такий сценарій, як:

#!/bin/sh
sudo mkdir /var/log/mongodb
sudo chown mongodb:mongodb /var/log/mongodb

Якщо ви не впевнені, що користувач mongod використовує, просто зробіть:

cat /etc/passwd | grep mongo

Додайте скрипт до запуску системи.


0

Ви не редагуєте шлях. Я вирішив проблему командою:

mongod --dbpath /data/mongo

0

Це питання з дозволом. коли ми змінюємо шлях до каталогу даних або файлу журналу, тоді ми повинні надати дозволи до нового каталогу. Тоді це добре працює. Якщо виникла така проблема, спочатку перевірте файл журналу "mongod.log".


Це не допомогло. Я дав повний дозвіл на папку "Журнал" користувачеві, який працює у службі mongod, я використовую Windows Server 2016. Досі не можу перезапустити службу після зміни шляху до файлу журналу, все одно отримуючи помилка: "Служба не відповідає на функцію управління.", будь-яка ідея, будь ласка?
Едді Кумар

0

Зупинити сервер MongoDB:

service mongod stop

Скопіюйте каталог mongo в новий каталог:

rsync -av /var/lib/mongo /home/data/

Перейменуйте старий каталог:

mv /var/lib/mongo /var/lib/mongo.bak

Symlink на нове місце:

ln -s /home/data/mongo /var/lib/mongo

Запустіть сервер MongoDB:

service mongod start
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.