MongoDB tidak dimulai setelah mengubah direktori data

10

Saya telah menginstal sebuah mongodbinstance menggunakan yum. . Sekarang semuanya bekerja dengan baik. Saya memulai layanan menggunakan service mongod start. Ini bekerja dengan baik. Kemudian saya mengubah data directorydan log pathdalam file konfigurasi. Saya me-restart server lagi dan saya memulai layanan. Tapi saya mendapatkan kesalahan di bawah ini:

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

Ketika saya memberi systemctl status mongod.servicesaya mendapatkan di bawah ini:

 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.

Ketika saya memberi journalctl -xnsaya mendapatkan di bawah ini:

-- 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

Adakah yang bisa membantu saya untuk memperbaikinya? Terima kasih!!!

PS : Direktori data yang saya buat memiliki semua izin untuk pengguna. Tetapi sekali lagi jika saya mengubah direktori data ke default ( /var/lib/mongodb) berfungsi dengan baik.

JERRY
sumber

Jawaban:

6

Saya mengalami masalah yang sama dan menemukan itu menjadi mongod.conffile yang salah konfigurasi dalam kasus saya. Bisa juga dengan izin pada direktori baru tidak diatur dengan benar. chown -R mongod:mongod <directory name>adalah cara saya memastikan akses (dan tentu saja chmod 600 <dir>juga). Terakhir, jalankan a ls -Zuntuk memastikan konteksnya benar. Saya hanya membandingkan dengan direktori default yang berfungsi untuk saya.

Jika ini belum diselesaikan, harap tunjukkan juga isi file log Anda. Mungkin ada beberapa petunjuk di sana.

Tom
sumber
4

Memperluas apa yang dikatakan @mustaccio, jawaban untuk saya adalah konteks SELinux pada yang baru logpathdan dbpath. Saya menjalankan perintah berikut dan semuanya baik-baik saja:

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

(ini pada RHEL 7.1 btw)

Ron L.
sumber
4

Saya memiliki ini di Raspberry Pi serta di server Ubuntu saya.

“Pekerjaan untuk mongod.service gagal. Lihat 'systemctl status mongod.service' dan 'journalctl -xn' untuk detailnya. "

Saya memiliki masalah ini pada kesempatan yang berbeda karena berbagai alasan:

  1. Nama file .conf yang salah - Skrip mongodb (yang saya pindahkan /etc/init.d/mongodb), baris 57 CONF=/etc/mongod.confsaat file saya yang sebenarnya /etc/mongodb.conf. Mengubah saluran 57 memperbaikinya. Juga, saya bisa mengubah nama skrip sama.

  2. file mongod.lock - Terakhir kali mongod berhenti tidak mendapatkan kesempatan untuk menutup database. Ini meninggalkan file di folder database Anda yang disebut mongod.lock. Di dalam folder ada nomor (saya percaya itu adalah PID yang terakhir digunakan mongo). Jika file ini ada, Anda tidak akan dapat memulai layanan mongod. Hapus file dan coba lagi.

  3. mongo user - Saya perlu membuat pengguna linux yang akan bertanggung jawab untuk memulai dan menjalankan layanan mongod.service. Saya beri nama mongo tambang dan memperbarui /etc/init.d/mongodbskrip saya , baris 95 untuk saya, untuk mengatakan DAEMONUSER=${DAEMONUSER:-mongo}. Ini tentu saja hanya akan berfungsi jika Anda telah membuat pengguna baru bernama mongo (atau apa pun yang Anda inginkan saya pikir).

  4. Izin DB - Ini adalah yang populer. Setelah Anda menyatakan di mana folder basis data akan berada, Anda perlu memastikan bahwa pengguna 'mongo' Anda memiliki file tersebut. Misalnya, basis data saya disimpan di /data/db. Saya menjalankan perintah berikut:
    sudo chown –R mongo:mongo /data
    dan ini memindahkan kepemilikan /datadan semua subdirektori ke pengguna mongo.

  5. Layanan yang salah - Yang ini sedikit memalukan bagi saya. Saya mencoba memulai mongosebagai layanan alih-alih mongod. mongoadalah shell yang dapat Anda jalankan dan masukkan perintah secara manual langsung ke mongo. Ini adalah bagaimana saya membuat database saya dan menambahkan beberapa objek sebagai contoh. mongoddi sisi lain adalah daemon mongo yang berjalan di latar belakang hosting database Anda untuk aplikasi lain yang Anda tulis / gunakan untuk mengakses. Pastikan Anda tidak mencampurnya di file conf, skrip, dll.

Semoga salah satu dari ini akan memperbaiki masalah untuk Anda.

Di samping catatan, mongodb.conffile saya kosong. Meski dengan itu kosong, Anda harus menunjukkannya dengan benar.

Ryan
sumber
2

Saya sudah mencoba ini dan itu berhasil.

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
Mehmet Cakoglu
sumber
1

Saya mengalami masalah peningkatan dari mongo yang datang dengan Centos 7 Repos, ke repo sendiri Mongos. Akibatnya meningkatkan dari V2 ke V3.

Ternyata centos 7 repo membutuhkan mongodb pengguna , sedangkan repo mongos sendiri menginginkan pengguna mongod

Pada akhirnya itu adalah file log yang masih ada dari instalasi lama yang tidak dapat ditulis oleh instalasi baru, karena nama pengguna berbeda dan saya tidak menyadarinya.

muttonUp
sumber
1

Pada sistem saya (Fedora) saya memiliki "/ var / log" pada tmpfs (ram), si setiap kali saya reboot semua yang ada di partisi itu hilang. Banyak orang melakukan ini karena mereka memiliki drive SSD dan ingin mengurangi I / O (menghemat drive seumur hidup).

Solusinya adalah membuat direktori / var / log / mongodb dan mengatur mongodb sebagai pemilik setiap kali sistem dinyalakan ulang.

Gunakan skrip seperti:

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

Jika Anda tidak yakin apa yang digunakan pengguna mongod lakukan saja:

cat /etc/passwd | grep mongo

Tambahkan skrip ke startup sistem Anda.

Eduardo GR
sumber
0

Anda tidak mengedit jalurnya. Saya memecahkan masalah dengan perintah:

mongod --dbpath /data/mongo
davylin
sumber
0

Ini masalah izin. ketika kita mengubah jalur direktori data atau file log maka kita harus memberikan izin ke direktori baru. Kemudian itu berjalan dengan baik. Jika ada masalah seperti ini, pertama-tama periksa file log "mongod.log".

naveen dahiya
sumber
Ini tidak membantu, saya memberikan izin penuh ke folder "Log" kepada pengguna yang menjalankan layanan mongod, saya menggunakan Windows Server 2016. Masih tidak dapat memulai kembali layanan setelah mengubah path ke file log, masih mendapatkan kesalahan: "Layanan tidak menanggapi fungsi kontrol.", ada ide tolong?
Eddie Kumar
0

Hentikan Server MongoDB:

service mongod stop

Salin direktori mongo ke direktori baru:

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

Ganti nama direktori lama:

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

Simbol ke lokasi baru:

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

Mulai Server MongoDB:

service mongod start
Mohamed-yassine Belatar
sumber