MongoDB hat heute plötzlich aufgehört zu arbeiten (12.04)

8

Nachdem ich vor ein oder zwei Monaten auf 12.04 aktualisiert hatte, installierte ich MongoDB über APT. Seitdem hat es gut funktioniert. Ich habe keine Änderungen an der Konfiguration oder irgendetwas vorgenommen - es hat einfach sofort funktioniert.

Heute hat es nicht angefangen, als ich mich anmeldete, hatte ich plötzlich den Fehler "Ich konnte keine Verbindung zu Servern in der Liste herstellen" in meiner Anwendung und ich überprüfte und mongodlief nicht.

ls -al /var/lib/mongodb

Zeigt keine *.lockDateien an.

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

Dann habe ich es versucht 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

Irgendeine Idee was falsch ist?

Aktualisieren

Also habe ich es versucht sudo service mongodb startund es hat endlich angefangen (ich habe es schon mehrmals versucht)

mongodb start/running, process 4376
Xeoncross
quelle

Antworten:

13

Diagnose

Als erstes müssen Sie die MongoDB-Protokolldateien überprüfen, um festzustellen, warum der Dienst nicht gestartet wurde. Lauf:

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

in einem Terminalfenster und dann ausführen:

sudo service mongodb restart

in einem anderen. In der Protokolldatei sollte MongoDB angezeigt werden, der versucht, eine Fehlermeldung zu starten und zu melden, wenn dies fehlschlägt.

Reparatur

Wenn aus den Protokollen hervorgeht, dass Sie Ihre Datenbank reparieren müssen, müssen Sie zwei Punkte beachten:

  1. Erwartet standardmäßig, mongoddass sich die Datenbankdateien befinden /data/db/, aber die Ubuntu-Pakete konfigurieren sie so , dass sie angezeigt werden /var/lib/mongodb/. Wenn Sie also mongoddirekt ausführen, anstatt die Upstart-Skripte zu verwenden, müssen Sie durch Hinzufügen eines --dbpathArguments angeben, wo sich Ihre Datenbankdateien befinden .
  2. Wenn es mongodmit upstart ausgeführt wird, wird es als mongodbder Benutzer ausgeführt, der die Datenbankdateien besitzt. Wenn Sie mongodusing sudoohne Angabe eines Benutzers ausführen , erhalten Sie Datenbankdateien von root. Sie müssen also ein -uArgument hinzufügen sudo.

Wenn sich Ihre Datenbankdateien derzeit im Besitz von befinden, müssen rootSie ihren Besitz wieder ändern, mongodbbevor MongoDB sie wieder verwenden kann:

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

TL; DR

Um eine Reparatur in MongoDB auszuführen, wenn Sie die gepackte Distribution verwenden, müssen Sie Folgendes ausführen:

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

Ich hatte auch das gleiche Problem und löste es. Als ich versuchte , beginnen mongodbmit sudozeigte der Prozess bereits ausgeführt wird ( ). Ich kann jedoch nicht über die Shell auf die laufende Instanz zugreifen. Es zeigte sich, dass die Verbindung fehlgeschlagen ist .mongodb start/running, process xxxx

Die Lösung

Also habe ich die Sperrdatei gelöscht:

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

Dann habe ich den Dienst neu gestartet:

sudo service mongodb start

Dann hat Mongo wieder an meiner Maschine gearbeitet!

Damodaran
quelle
0

Ich hatte auch ein ähnliches Problem beim Starten von mongod.exe auf meinem Computer (Windows-Installation). Das war eine .lockDatei, in C:\data\dbder das Problem verursacht wurde. Ich habe diese Datei gelöscht und das Problem wurde behoben.

George Joseph
quelle
0

Hatte ein ähnliches Problem, weil die Sache irgendwie dumm war; Ich hatte keinen Speicherplatz mehr.

Beim Überprüfen der Protokolle unter /var/log/mongodb/mongod.log wurde folgende Zeile festgestellt:

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

In der Hoffnung, dass dies jemandem eine halbe Stunde seines Lebens erspart.

Edo
quelle