MongoDB tiba-tiba berhenti bekerja hari ini (12.04)

8

Setelah saya perbarui ke 12,04 sebulan atau dua bulan yang lalu saya menginstal MongoDB melalui APT. Sejak saat itu ia bekerja dengan baik. Saya tidak membuat perubahan pada konfigurasi atau apa pun - itu hanya bekerja di luar kotak.

Hari ini tidak dimulai, ketika saya login saya tiba-tiba memiliki kesalahan "tidak dapat terhubung ke server dalam daftar" dalam aplikasi saya dan saya memeriksa dan mongodtidak berjalan.

ls -al /var/lib/mongodb

Tidak memperlihatkan *.lockfile.

$ /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")

Lalu saya mencoba 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

Apakah ada yang salah?

Memperbarui

Jadi saya mencoba sudo service mongodb startdan akhirnya dimulai (saya sudah mencoba ini beberapa kali sebelumnya)

mongodb start/running, process 4376
Xeoncross
sumber

Jawaban:

13

Diagnosa

Hal pertama yang harus dilakukan adalah memeriksa file log MongoDB untuk melihat mengapa layanan tidak dimulai. Lari:

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

di satu jendela terminal dan kemudian jalankan:

sudo service mongodb restart

di tempat lain. File log harus memperlihatkan MongoDB yang mencoba memulai dan melaporkan pesan kesalahan jika gagal.

Perbaikan

Jika log menunjukkan bahwa Anda perlu memperbaiki database Anda, ada dua hal yang perlu diperhatikan:

  1. Secara default, mongodmengharapkan file database berada /data/db/, tetapi paket Ubuntu mengkonfigurasinya untuk melihatnya /var/lib/mongodb/. Jadi jika Anda menjalankan mongodsecara langsung daripada menggunakan skrip pemula, Anda harus memberi tahu di mana file database Anda dengan menambahkan --dbpathargumen.
  2. Saat berjalan mongodmenggunakan pemula, itu akan berjalan sebagai mongodbpengguna yang merupakan pengguna yang memiliki file database. Jika Anda menjalankan mongodmenggunakan sudotanpa menentukan pengguna maka Anda akan berakhir dengan file database yang dimiliki oleh root. Jadi, Anda perlu menambahkan -uargumen sudo.

Jika file database Anda saat ini dimiliki oleh rootAnda, Anda perlu mengubah kepemilikannya kembali mongodbsebelum MongoDB dapat menggunakannya lagi:

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

TL; DR

Untuk menjalankan perbaikan pada MongoDB saat menggunakan distribusi paket, Anda perlu menjalankan:

sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
David Edwards
sumber
4

Saya juga punya masalah yang sama, dan menyelesaikannya. Ketika saya mencoba memulai mongodbdengan sudoitu menunjukkan proses sudah berjalan ( ). Tapi saya tidak bisa mengakses instance yang berjalan melalui shell. Itu menunjukkan koneksi gagal .mongodb start/running, process xxxx

Solusinya

Jadi saya menghapus file kunci:

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

Kemudian saya memulai kembali layanan:

sudo service mongodb start

Kemudian Mongo mengerjakan mesin saya lagi!

Damodaran
sumber
0

Saya juga punya masalah yang sama untuk memulai mongod.exe di komputer saya (instalasi Windows). Itu adalah .lockfile C:\data\dbyang menyebabkan masalah. Saya menghapus file itu dan masalah terselesaikan.

George Joseph
sumber
0

Punya masalah yang sama, penyebabnya agak bodoh; Saya kehabisan ruang disk.

Memeriksa log di /var/log/mongodb/mongod.log Saya melihat baris berikut:

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

Berharap ini menyelamatkan seseorang setengah jam dari hidup mereka.

Edo
sumber