Inhalt

Einleitung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Protokolldaten überprüfen

Reparieren der Datenbank, wenn sie nicht startet

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