it-swarm.com.de

MongoDB --- Globale Initialisierung fehlgeschlagen: "/var/log/mongodb/mongod-config.log" konnte nicht geöffnet werden.

Ich versuche, die Konfigurationsserver für Mongodb-Sharding einzurichten. Ich habe eine bestimmte Konfigurationsdatei erstellt, die auf /var/log/mongodb/mongod-config.log Protokolliert.

Wenn ich mongod --config <path-to-config-file> Ausführe, wird folgende Fehlermeldung angezeigt:

`F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open 
"/var/log/mongodb/mongod-config.log"`

Wenn ich denselben Befehl mit Sudo ausführe, wird er ausgeführt, es erfolgt jedoch keine Ausgabe.

Wenn ich dann versuche, die Mongo-Shell an dem in meiner Konfigurationsdatei angegebenen Port (27019) zu starten, erhalte ich Folgendes:

MongoDB Shell version v3.6.4
connecting to: mongodb://127.0.0.1:27019/test
2018-05-01T03:13:13.399+0000 W NETWORK  [thread1] Failed to connect to 
127.0.0.1:27019, in(checking socket for error after poll), reason: Connection 
refused
2018-05-01T03:13:13.400+0000 E QUERY    [thread1] Error: couldn't connect to 
server 127.0.0.1:27019, connection attempt failed :
[email protected]/mongo/Shell/mongo.js:251:13
@(connect):1:6
exception: connect failed

Ich folge nur der MongoDB-Sharding-Dokumentation

Ich habe einige der vorherigen Beiträge hier gesehen und einer war der das gleiche Problem . Keine Lösung, aber ich möchte es noch einmal versuchen und sehen, ob jemand eine Lösung dafür hat.

Ich bin mir nicht sicher, ob ich etwas verpasst habe oder was das Problem ist ...

6
rapidDev

Also habe ich meine eigene Frage herausgefunden.

Erstens war das Problem, dass ich diesen Port über die Firewall öffnen musste, da ich einen anderen Port 27019 für die Konfigurationsserver verwendete.

Zweitens ich habe den dbPath geändert in meiner Konfigurationsdatei von /var/lib/mongodb bis /data/db da dies der Standardpfad für Mongodb zum Speichern von Daten ist.

Stellen Sie sicher, dass Sudo service mongod restart nach.

Nachdem dies erledigt war, konnte ich mongod mit meiner spezifischen Konfigurationsdatei starten:

Sudo mongod --config <path-to-config-file>

Der Schlüssel ist, Sudo für mich einzuschließen. Das löste das Problem von:

F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open 
"/var/log/mongodb/mongod-config.log"

Nachdem ich den Befehl ausgeführt habe, sehe ich, dass Mongod auf meiner virtuellen Maschine (VM) gestartet wurde, und jetzt kann ich von einer anderen Maschine aus eine Verbindung zur Mongo-Shell dieser VM herstellen mit:

mongo <ip_address_of_said_vm>:27019
3
rapidDev

Sie müssen Ihre eigene Protokolldatei in Ihrem eigenen Verzeichnis erstellen. Sie können den vorhandenen mongod.log Nicht verwenden. Wenn Sie versuchen, in die mit der MongoDB-Installation gelieferte Datei mongod.log Zu schreiben, erhalten Sie Fehler beim Öffnen und Zugriff verweigert.

Wenn Sie Mongo auf einem Windows-Laptop ausführen, sollten Sie es mit einem ähnlichen Befehl starten:

mongod --dbpath "C:\Program Files\MongoDB\Server\4.2" --logpath "C:\MongoData\data.log"

dabei ist C:\MongoData\data.log eine leere Datei, die ich in einem neuen Verzeichnis erstellt habe.

1
Steve Stilson

Standardmäßig erstellt MongoDB die Protokolldatei unter diesem Pfad /var/log/mongodb/mongodb.log, wenn die Protokolldatei nicht gefunden wird, überprüfen Sie dies bitte mit der MongoDB-Konfigurationsdatei.

logpath

Überprüfen Sie die MongoDB-Konfigurationsdatei unter /etc/mongod.conf oder /yourMongoDBpath/mongod.conf, der Protokollpfad, der definiert, wo protokolliert werden soll.

/etc/mongod.conf

$ cat /etc/mongod.conf # mongod.conf

Wo werden die Daten gespeichert?.

Hinweis: Wenn Sie mongodb als Nicht-Root-Benutzer ausführen (empfohlen), müssen Sie möglicherweise manuell Berechtigungen für dieses Verzeichnis erstellen und festlegen, z. B. wenn das übergeordnete Verzeichnis vom mongodb-Benutzer nicht geändert werden kann.

dbpath=/var/lib/mongodb

wo zu protokollieren

logpath=/var/log/mongodb/mongod.log

...

Zum Beispiel

Hier erwähne ich einen mongod.conf Datei mit dbpath und logpath. Und ich werde hier zeigen, wie man den mongod Server sowie die mongo Shell startet.

sharding:
  clusterRole: configsvr
replication:
  replSetName: repltest
security:
  keyFile: /var/mongodb/pki/replkeyfile
net:
  bindIp: localhost,192.168.103.100
  port: 26001
systemLog:
  destination: file
  path: /var/mongodb/db/csrs1/mongod.log
  logAppend: true
processManagement:
  fork: true
storage:
  dbPath: /var/mongodb/db/csrs1
~       

Verwenden Sie dann den Befehl wie -, um mongod mit --fork zu starten

/var/mongodb/db/csrs1$ mongod -f csrs1.conf

warten Sie, bis der Server für Verbindungen bereit ist. Gabelprozess: 2101 untergeordneter Prozess erfolgreich gestartet, übergeordneter Prozess beendet

Und um die Mongo Shell zu starten

mongo --port 26001

Einige der MongoDB-Jira-Blogs bezogen sich auf Fehler hier und hier .

Für weitere Ihre ref hier und hier

1

Ich hatte auch das gleiche Problem, als ich versuchte, den Mongodb-Dienst auf meinem Debian9 64-Bit-Server zu starten. Ich konnte die folgenden Informationen sehen, während ich den Status überprüfte.

:~# systemctl status mongod.service
● mongod.service - High-performance, schema-free document-oriented database
   Loaded: loaded (/etc/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fri 2019-02-22 14:52:17 CET; 11s ago
     Docs: https://docs.mongodb.org/manual
  Process: 20914 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=1/FAILURE)
 Main PID: 20914 (code=exited, status=1/FAILURE)

Feb 22 14:52:17 server-test systemd[1]: Started High-performance, schema-free document-oriented database.
Feb 22 14:52:17 server-test mongod[20914]: 2019-02-22T14:52:17.650+0100
F CONTROL  [main] Failed global initialization: FileNotOpen: Failed to open "/var/log/mongodb/mongod.log"
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Main process exited, code=exited, status=1/FAILURE
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Unit entered failed state.
Feb 22 14:52:17 server-test systemd[1]: mongod.service: Failed with result 'exit-code'.

Ich habe auch detaillierte Informationen zu jedem Startbefehlsergebnis in "/var/log/daemon.log". Ich konnte die Informationen sehen "Failed global initialization: FileNotOpen: Failed to open "/var/log/mongodb/mongod.log" das war einer der Anhaltspunkte für das Problem. Während der Überprüfung konnte ich sehen, dass die Datei mongod.log im Root-Besitz war und der Dienst unter dem Benutzer "mongodb" gestartet wurde. Wenden Sie also den folgenden Fix an.

fix1: -  chown mongodb:mongodb /var/log/mongodb/mongod.log

Beim Versuch, erneut zu starten, konnte ich sehen, dass der Dienst diesmal in "daemon.log" einen neuen Fehler anzeigt.

mongod.service: Main process exited, code=exited, status=100/n/a
mongod.service: Unit entered failed state.

Dieser Fehler wurde verursacht, da der Speicherort der Mongodb-Datei Probleme aufweist und nicht auf die Dateien zugreifen kann.

fix2.  chown -R mongodb:mongodb /var/lib/mongodb/*

Siehe den Screenshot im Anhang. Jetzt kann ich den Dienst starten.

(enter image description here

0
nisamudeen97

Unter Windows hatte ich das gleiche Problem. Das Problem war die Erlaubnis der Datei. Dann hatte die Datei "mongod.log" in "C:\Programme\MongoDB\Server\4.2\log" keine Schreibberechtigung. Dann, in "Eigenschaften" der Datei, aba "Sicherheit" in Ich habe die Erlaubnis zum "Schreiben".

0
Diego Guedes