Einleitung
In diesem Dokument wird beschrieben, wie die MongoDB auf der Secure Network Analytics (ehemals Stealthwatch) Manager Appliance nach einem unsauberen Herunterfahren repariert werden kann.
Voraussetzungen
Anforderungen
Es gibt keine spezifischen Anforderungen für dieses Dokument.
Verwendete Komponenten
Dieses Dokument ist nicht auf bestimmte Software- und Hardware-Versionen beschränkt.
Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen aller Befehle verstehen."
Protokolldaten überprüfen
Verwenden Sie den Befehl less
, um die Datei mongodb.log zu überprüfen.
732smc:~# less /lancope/var/mongodb/log/mongodb.log
2021-06-21T14:54:43.029+0000 I CONTROL ***** SERVER RESTARTED *****
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] MongoDB starting : pid=87057 port=27017 dbpath=/lancope/var/database/dbs/mdb/ 64-bit host=ussecrapstwsmc1
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] db version v3.0.15
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] git version: b8ff507269c382bc100fc52f75f48d54cd42ec3b
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] build info: Linux 3555b2234f08 4.9.0-2-amd64 #1 SMP Debian 4.9.13-1 (2017-02-27) x86_64 BOOST_LIB_VERSION=1_49
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] allocator: tcmalloc
2021-06-21T14:54:43.033+0000 I CONTROL [initandlisten] options: { config: "/etc/mongodb/mongodb.conf", net: { port: 27017 }, processManagement: { fork: true }, storage: { dbPath: "/lancope/var/database/dbs/mdb/" }, systemLog: { destination: "file", logAppend: true, path: "/lancope/var/mongodb/log/mongodb.log" } }
2021-06-21T14:54:43.050+0000 W - [initandlisten] Detected unclean shutdown - /lancope/var/database/dbs/mdb/mongod.lock is not empty.
2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] **************
old lock file: /lancope/var/database/dbs/mdb/mongod.lock. probably means unclean shutdown,
but there are no journal files to recover.
this is likely human error or filesystem corruption.
please make sure that your journal directory is mounted.
found 2 dbs.
see: http://dochub.mongodb.org/core/repair for more information
*************
2021-06-21T14:54:43.063+0000 I STORAGE [initandlisten] exception in initAndListen: 12596 old lock file, terminating
2021-06-21T14:54:43.063+0000 I CONTROL [initandlisten] dbexit: rc: 100
Reparieren der Datenbank, wenn sie nicht startet
Schritt 1: Mongo-Status überprüfen
Um den Status von lc-mongodb.service zu überprüfen, geben Sie den Befehl systemctl is-active lc-mongodb ein
.
Wenn Mongo in einem aktiven Zustand ist, würden Ihre Ergebnisse ähnlich aussehen:
732smc:/# systemctl is-active lc-mongodb
active
732smc:/#
Wenn Mongo nicht in einem aktiven Zustand ist, würden Ihre Ergebnisse ähnlich aussehen:
732smc:/# systemctl is-active lc-mongodb
inactive
732smc:/#
Schritt 2: Mongo Service stoppen
Wenn festgestellt wurde, dass der Dienst lc-mongodb in einem aktiven
Zustand ist, beenden Sie den Dienst mit dem Befehl /bin/systemctl stop lc-mongodb.service
.
732smc:/# /bin/systemctl stop lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: inactive (dead) since Thu 2022-04-07 12:33:49 UTC; 1s ago7
Warten Sie einen Augenblick, und stellen Sie sicher, dass Mongo im angehaltenen Zustand bleibt. Verwenden Sie bei Bedarf den Befehl /bin/systemctl status lc-mongodb.service
, um sicherzustellen, dass sich der Dienst in einem inaktiven
Zustand befindet.
Schritt 3: ID des Erfassungsprozesses (PID)
Überprüfen Sie, ob die Sperrdatei noch eine PID enthält. Geben Sie den Befehl cat /lancope/var/database/dbs/mdb/mongod.lock
ein.
Diese Ausgabe zeigt, dass die Sperrdatei die PID des Mongo-Dienstes enthält. Diese Datei darf nur Daten enthalten, wenn sich der Dienst in einem aktiven Zustand befindet.
Hinweis: Notieren Sie sich die PID bei Rückgabe, wie in Schritt 4 beschrieben.
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
14259
732smc:/#
Diese Ausgabe zeigt, dass die Sperrdatei keine PID enthält. Diese Datei muss leer sein, wenn der Prozess nicht aktiv ist. Fahren Sie mit Schritt 7 fort, wenn keine PID vorhanden ist.
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Schritt 4: PID-Status überprüfen
Wenn die in Schritt 3 überprüfte Datei mongod.lock eine PID enthielt, führen Sie den Befehl ps fuax aus.
| grep [1]4259-
Befehl (ändern Sie den [1]4259 mit Ihrer PID aus Schritt 3), um das Vorhandensein der PID zu überprüfen und diese PID anschließend zu beenden, falls sie gefunden wird.
Hinweis: Der Klammerausdruck ist nicht erforderlich, führt jedoch zum Ausschluss des Befehls "grep" in der Ausgabe.
732smc:/# ps faux | grep [1]4259
mongodb 14259 0.3 0.4 516180 71520 ? Sl 12:38 0:03 /lancope/mongodb/bin/mongod --fork --config /etc/mongodb/mongodb.conf
732smc:/# kill -9 14259
732smc:/#
Schritt 5: Inhalt der Sperrdatei löschen
Löschen Sie den Inhalt der Sperrdatei mit dem Befehl > /lancope/var/database/dbs/mdb/mongod.lock
. Vergewissern Sie sich, dass die Datei mit dem Befehl cat /lancope/var/database/dbs/mdb/mongo.lock
leer ist.
732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Schritt 6: Versuch, die MongoDB zu starten
Versuchen Sie, den Dienst lc-mongodb mit dem Befehl /bin/systemctl start lc-mongodb.service zu starten
. Sobald Ihre Eingabeaufforderung zurückgegeben wird, überprüfen Sie den Status des Prozesses mit dem Befehl /bin/systemctl status lc-mongodb.service
| grep Active
-Befehl.
732smc:/# /bin/systemctl start lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago
732smc:/#
Wenn der Prozess in einem aktiven Zustand ist, überprüfen Sie ihn in wenigen Minuten erneut, um sicherzustellen, dass er in einem aktiven Zustand bleibt. Sie müssen die Datenbank nicht reparieren, wenn sie in einem funktionierenden Zustand bleibt. Wenn der Prozess nicht aktiv bleibt, fahren Sie mit Schritt 7 fort, und initiieren Sie einen Reparaturprozess.
Schritt 7. Reparatur einleiten
Führen Sie den Befehl sudo -u mongodb /lancope/mongodb/bin/mongod —dbpath /lancope/var/database/dbs/mdb —repair aus.
732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair
732smc:/#
Schritt 8: Versuchen Sie, die reparierte MongoDB zu starten
Führen Sie den Befehl /bin/systemctl start lc-mongodb.service
aus, um den Dienst zu starten. Der Prozess muss in einem aktiven Zustand bleiben und kann mit dem Befehl /bin/systemctl status lc-mongodb.service
überprüft werden.
732smc:/# /bin/systemctl start lc-mongodb.service
732smc:/# /bin/systemctl status lc-mongodb.service | grep Active
Active: active (running) since Thu 2022-04-07 12:38:37 UTC; 27s ago