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 mongod
lä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 htop
und mongo
sagt:
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
/var/lib/mongodb/mongod.lock
bevor ich MongoDB mit neu starten kannsudo service mongodb start
.sudo mongod
nach dem Entfernen mit beginnen , wird/data/db/mongod.lock
es ordnungsgemäß ausgeführt.Antworten:
Führen Sie auf meinem Ubuntu-Server einfach Folgendes aus:
sudo rm /var/lib/mongodb/mongod.lock mongod --repair sudo service mongodb start
quelle
Fest!
Der Grund war die
dbpath
Variable in/etc/mongodb.conf
. Zuvor habe ich mongodb 1.8 verwendet, wobei der Standardwert für dbpath war/data/db
. Der Upstart-Jobmongodb
(der mit dem mongodb-10gen-Paket geliefert wird) ruft diemongod
with---config /etc/mongodb.conf
Option auf.Als Lösung musste ich den Besitzer des
/data/db
Verzeichnisses nur rekursiv ändern .quelle
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
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
quelle
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
quelle
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
oder
in der Mongo-Shell, um Ihre Datenbank wieder in den "gesunden" Zustand zu bringen.
quelle
mongod --repair
und es aktualisierte meine Datenbanken. Es war notwendig. Der Dienst startet jedoch immer noch nicht.1 - Option deaktivieren,
fork
/etc/mongodb.conf
falls aktiviert2 - Reparieren Sie Ihre Datenbank
3 - Töte den aktuellen Mongod-Prozess
Finden Sie Mongo-Prozesse
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
quelle
Manchmal müssen Sie die .lock-Datei entfernen, damit der Dienst ausgeführt wird
quelle
Für Ubunto war die Installation des Mongodb-Pakets das, was es möglich und wirklich einfach gemacht hat:
quelle
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 "
quelle
gerade Mongo neu installiert und es hat funktioniert. Keine Sammlungen verloren. Zumindest für mich die einfachste Lösung
quelle
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 . . .
quelle
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/ sudo service mongodb start
quelle
Dies kann auch passieren, wenn die Festplatte in Ihrem
logpath
Pfad 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.log
wenn Sie den Prozess starten, was so schwierig zu beheben ist.quelle
Denken Sie daran, dass laut offizieller MongoDB-Dokumentation der richtige Befehl zum Starten des Dienstes (@Ubuntu) lautet:
sudo service mongod start
(06/2018) (nomongodb
ormongo
).Referenz: https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
quelle
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
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!
quelle
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
quelle
Was mir bei der Diagnose des Problems geholfen hat, war das Ausführen
mongod
und Angeben der/etc/mondgob.conf
Konfigurationsdatei:Dies ergab, dass einige Optionen in /etc/mongdb.conf "Nicht erkannt" waren. Ich hatte beide Optionen unter auskommentiert
security:
und nursecurity:
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.
quelle
Das Entfernen der
.lock
Datei 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:
Benutzer ändern: Gruppenberechtigung:
sudo systemctl start mongod
quelle
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
quelle
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
quelle