Der Mongodb-Dienst wird nicht gestartet


73

Ich habe mongodb 2.0.3 mit dem Debian-Paket mongodb-10gen installiert. Alles ist gut gelaufen, außer dass der standardmäßig installierte Dienst beim Starten des Computers nicht gestartet wird. Das mongodläuft nur als Root. Vielleicht ist das der Grund. Soweit ich weiß, sollten die Dienste ausgeführt werden, da sie vom Root-Benutzer hinzugefügt werden.

Was kann die Lösung sein?

wenn ich nur renne mongod

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

Wenn ich laufe sudo service mongodb start, heißt es:

mongodb start/running, process 4861

aber es gibt keinen Prozess beim Schauen mit htopund mongosagt:

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

2
Benötigen Sie weitere Informationen. Wie versuchst du MongoDB zu starten? Welche Fehlermeldungen werden gegebenenfalls in der Konsole angezeigt? Wenn sich mein [Ubuntu] -Computer ohne sauberes Herunterfahren ausschaltet, muss ich ihn manuell entfernen, /var/lib/mongodb/mongod.lockbevor ich MongoDB mit neu starten kann sudo service mongodb start.
Adam Monsen

Wenn Sie sudo mongodnach dem Entfernen mit beginnen , wird /data/db/mongod.lockes ordnungsgemäß ausgeführt.
Esenbek Kydyr uulu

1
Dies gilt hier nicht seit Linux, aber Windows-Probleme können gelöst werden mit: stackoverflow.com/questions/4661670/…
James Oravec

Antworten:


117

Führen Sie auf meinem Ubuntu-Server einfach Folgendes aus:

sudo rm /var/lib/mongodb/mongod.lock
mongod --repair
sudo service mongodb start

1
Danke dafür! Aber gibt es eine Möglichkeit, dieses Problem dauerhaft zu beheben? Ich sehe einige der folgenden Lösungen, bei denen dieser Befehl bei jedem Neustart ausgeführt wird. Gibt es jedoch einen besseren Weg?
Deepak Joy

Super, das hat bei mir funktioniert. Ich bin froh, dass ich nach unten gescrollt habe, um die Antwort mit der höchsten Stimme zu finden. smh StackOverflow, du musst diese höher bewerteten Antworten dort oben bekommen, wenn es keine akzeptierte Lösung für die Frage gibt. Neugierig zu wissen, was die Ursache für dieses MongoDB-Problem sein könnte
Hamman Samuel

@ HammanSamuel Das Sortieren der Antworten hängt von Ihnen ab, nicht von SO. Wenn Sie die Antworten nach Stimmen sortieren, sehen Sie diese Antwort oben :)
NSNoob

Für diejenigen , die Fehlermeldung erhalten , mit dem Code heruntergefahren: 48 bei mongd --repair sollte die mongod zunächst den Dienst zu stoppen , indem Shell und Typ mongo Verwendung Admin und dann db.shutdownServer () und danach der Reparaturbefehl wird den Trick ausgeführt
Mzparacha

32

Fest!

Der Grund war die dbpathVariable in /etc/mongodb.conf. Zuvor habe ich mongodb 1.8 verwendet, wobei der Standardwert für dbpath war /data/db. Der Upstart-Job mongodb(der mit dem mongodb-10gen-Paket geliefert wird) ruft die mongodwith- --config /etc/mongodb.confOption auf.

Als Lösung musste ich den Besitzer des /data/dbVerzeichnisses nur rekursiv ändern .


30

Dies kann auch passieren, wenn Ihre Dateiberechtigungen irgendwie geändert werden. Das Entfernen der Sperrdatei hat nicht geholfen, und es wurden Fehler in der Protokolldatei angezeigt, z. B.:

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

Also ging ich, um die Berechtigungen zu überprüfen:

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

Reparieren:

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

Entfernen Sie die Sperrdatei, wenn sie noch vorhanden ist:

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

Starten Sie Mongodb

# service mongodb start

Beenden Sie das Protokoll und Sie sollten am Ende sehen:

tail -f /var/log/mongodb/mongodb.log
2016-01-20T09:16:02.025-0800 [initandlisten] waiting for connections on port 27017

1
Das hat bei mir funktioniert. Es gab einige DB-Dateien mit Root-Benutzer
Girish Gupta

Danke, das hat mein Problem behoben!
JDev

Vielen Dank, Das funktionierte und müssen diesen Befehl als ausführen sudo zu
Rakshitha Muranga Rodrigo

21

Ich war gelangweilt dieses Problem , damit ich ein Shell - Skript erstellen beschlossen , meine Mongo Daten leicht stützen wiederherzustellen.

#!/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

Denken Sie daran, dass beim Neustart der Datenbank durch gewaltsames Entfernen von .lock-Dateien die Daten möglicherweise beschädigt werden. Ihr Server sollte nicht als "fehlerfrei" eingestuft werden, wenn Sie den Server auf diese Weise neu gestartet haben.

Um die Situation zu ändern, führen Sie entweder aus

mongod --repair

oder

> db.repairDatabase();    

in der Mongo-Shell, um Ihre Datenbank wieder in den "gesunden" Zustand zu bringen.


1
Vielen Dank. Ich lief mongod --repairund es aktualisierte meine Datenbanken. Es war notwendig. Der Dienst startet jedoch immer noch nicht.
Esenbek Kydyr uulu

11

1 - Option deaktivieren,fork/etc/mongodb.conf falls aktiviert

2 - Reparieren Sie Ihre Datenbank

mongod --repair --dbpath DBPATH

3 - Töte den aktuellen Mongod-Prozess

Finden Sie Mongo-Prozesse

ps -ef | grep mongo

Sie erhalten Mongod PID

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

Stoppen Sie den aktuellen Mongod-Prozess

kill -9 PID

4 - Starten Sie den MongoDB-Dienst

service mongodb start

5

Manchmal müssen Sie die .lock-Datei entfernen, damit der Dienst ausgeführt wird


5

Für Ubunto war die Installation des Mongodb-Pakets das, was es möglich und wirklich einfach gemacht hat:

sudo apt-get install  mongodb

nein, benutze diesen Befehl nicht, er installiert eine ältere Version von mongdb
Nisharg Shah

4

Bitte überprüfen Sie Ihre Berechtigungen für den Ordner " Daten ". Dies ist ein Berechtigungsproblem, da Linux-Benutzer aufgrund von SE-Linux-Berechtigungen mit diesem Problem konfrontiert sind. Sie ändern also den Eigentümer und die Gruppe für den Ordner " data " in " mongodb "


Ich hatte versucht herauszufinden, warum der Mongod-Dienst keinen benutzerdefinierten Datenordner abholte. Das war eine Erlaubnisfrage. / var / lib / mongodb, / var / log / mongodb und Ihr benutzerdefinierter Datenpfad sollten über die Berechtigung des Mongodb-Benutzers verfügen, einschließlich aller Unterordner.
Abubacker Siddik

3

gerade Mongo neu installiert und es hat funktioniert. Keine Sammlungen verloren. Zumindest für mich die einfachste Lösung


3

Die Lösung von Nianliang erwies sich in meinem Vagrant-Ubunuto als so nützlich, dass ich diese beiden Befehle zu meiner Datei /etc/init.d/mongodb hinzufügte:

.
.
.    
start|stop|restart)
        rm /var/lib/mongodb/mongod.lock
        mongod --repair
.
.
.

3
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/
sudo service mongodb start

3

Dies kann auch passieren, wenn die Festplatte in Ihrem logpathPfad voll ist (z. B. wenn Sie ein dediziertes /log/Verzeichnis / Laufwerk haben und es voll ist).

Dies hat mich für gut 15 Minuten in Panik versetzt, weil es Sie auch daran hindert, das zu lesen, mongod.logwenn Sie den Prozess starten, was so schwierig zu beheben ist.



2

Ich habe einen anderen Ansatz gewählt:

Hintergrund: Ich verwende Mongodb, einen einzelnen Knoten, lokal auf meinem Server, als Staging-Bereich.

Ich habe mongo basierend auf Anweisungen installiert, die in MongoDB-Dokumenten verfügbar sind.

Dies ist also keine „erstklassige“ Infrastruktur, muss nicht ständig in Betrieb sein - ist aber dennoch unerlässlich.

Was ich tue: In meinem Ausführungsskript überprüfe ich, ob Mongo mit - ausgeführt wird.

if pgrep "mongod" >/dev/null 2>&1

Wenn es nicht läuft, dann laufe ich

sudo mongod &

Ich habe wie ein Zauber gearbeitet, kein Setup usw.

Wenn Ihr Anwendungsfall ähnlich ist, lassen Sie mich wissen, ob er auch für Sie funktioniert.

Viel Glück!


2

Ich hatte das Problem, dass das Starten des Dienstes mongodb ohne Protokolle fehlgeschlagen ist. Um den Fehler zu beheben, habe ich dem Benutzer mongodb Schreibzugriff auf das Verzeichnis / var / log / mongodb gewährt


1

Was mir bei der Diagnose des Problems geholfen hat, war das Ausführen mongodund Angeben der /etc/mondgob.confKonfigurationsdatei:

mongod --config /etc/mongodb.conf

Dies ergab, dass einige Optionen in /etc/mongdb.conf "Nicht erkannt" waren. Ich hatte beide Optionen unter auskommentiert security:und nur security:in einer Zeile allein gelassen , was dazu führte, dass der Dienst nicht gestartet wurde. Das sieht aus wie ein Fehler.

security:
#  authorization: enabled
#  keyFile: /etc/ssl/mongo-keyfile

^^ Fehler

#security:
#  authorization: enabled
#  keyFile: /etc/ssl/mongo-keyfile

^^ richtig kommentiert.


1

Das Entfernen der .lockDatei und das erneute Installieren haben das Problem auf meinem Computer (Ubuntu 19.10) nicht behoben. Das Problem war, dass nach dem unerwarteten Herunterfahren die MongoDB-Socke nicht mehr zur MongoDB-Gruppe und zum Benutzer gehört.

Also folge ich den folgenden Schritten:

  1. cd / tmp
  2. ls * .sock
  3. Benutzer ändern: Gruppenberechtigung:

    chown mongodb:mongodb <YOUR_SOCK>
    
  4. sudo systemctl start mongod

  5. sudo systemctl status mongod

0

Installieren Sie mongodb für Ubuntu 14.04

sudo nano /etc/apt/sources.list.d/mongodb-org-3.2.list

echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list

sudo apt-get update

sudo apt-get install -y mongodb-org=3.2.10 mongodb-org-server=3.2.10 mongodb-org-shell=3.2.10 mongodb-org-mongos=3.2.10 mongodb-org-tools=3.2.10

0

Ich hatte mit dem ähnlichen Problem zu kämpfen und die Lösung entsprechend zu teilen. Wir verwenden ein Mongo-Replikatset und der Mongo-Dienst auf meinem sekundären Server hat zu lange gedauert, um zu starten. (ca. 10-15 Minuten)

Ich konnte nichts finden, bis versucht wurde, den Mongo mit einem anderen Ordner in --dbpath zu konfigurieren. Und das funktionierte einwandfrei, sodass wir erfuhren, dass der frühere Pfad, bei dem es sich um ein Mount-Verzeichnis handelte, einige Probleme hatte. Also folgte mit dem nss-Team, um das Netzwerk-Mount-Problem zu lösen.

Hoffe das hilft jemandem

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.