Inleiding
In dit document wordt beschreven hoe u de MongoDB op het Secure Network Analytics (voorheen Stealthwatch) Manager-apparaat kunt repareren na een onschone stopzetting.
Voorwaarden
Vereisten
Er zijn geen specifieke vereisten van toepassing op dit document.
Gebruikte componenten
Dit document is niet beperkt tot specifieke software- en hardware-versies.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, zorg er dan voor dat u de mogelijke impact van elke opdracht begrijpt."
Loggegevens bekijken
Gebruik de opdracht om het bestand mongodb.log te bekijken.
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
Repareer de database als deze niet start
Stap 1. Controleer de Mongo-status
Om de status van lc-mongodb.service te controleren, geeft u de opdracht.
Als Mongo in een actieve staat is, zullen uw resultaten lijken op:
732smc:/# systemctl is-active lc-mongodb
active
732smc:/#
Als Mongo niet actief is, zullen de resultaten er als volgt uitzien:
732smc:/# systemctl is-active lc-mongodb
inactive
732smc:/#
Stap 2. Stop de Mongo Service
Als de lc-mongodb dienst in staat is, stop de dienst met het commando.
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
Wacht een paar ogenblikken en zorg ervoor dat het mongo in een stilstaande toestand blijft. Gebruik de opdracht indien nodig om er zeker van te zijn dat de service in de staat is.
Stap 3. Verzamel proces-ID (PID)
Controleer of het vergrendelingsbestand nog steeds een PID bevat. Geef de opdracht uit.
Deze output toont aan dat het slotbestand de PID van de mongoservice bevat. Dit bestand mag alleen gegevens bevatten als de service actief is.
Opmerking: Neem nota van PID als één is teruggekeerd, aangezien het in Stap 4 wordt gebruikt
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
14259
732smc:/#
Deze output toont aan dat het slotbestand geen PID bevat. Dit bestand moet leeg zijn als het proces niet actief is. Als er geen PID is, gaat u verder met Stap 7.
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Stap 4. Controleer de PID-status
Als mongod.lock bestand gecontroleerd in Stap 3 een PID bevatte, voer het commando uit (verander de [1]4259 met uw PID uit stap 3) om het bestaan van de PID te controleren en vervolgens te doden dat PID als het wordt gevonden.
Opmerking: De haakexpressie is niet vereist maar resulteert in de uitsluiting van de opdracht "grep" in de uitvoer.
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:/#
Stap 5. Inhoud van vergrendelingsbestand wissen
Schakel de inhoud van het vergrendelingsbestand met de opdracht uit. Controleer of het bestand nu leeg is met de opdracht.
732smc:/# > /lancope/var/database/dbs/mdb/mongod.lock
732smc:/# cat /lancope/var/database/dbs/mdb/mongod.lock
732smc:/#
Stap 6. Probeer de MongoDB te starten
Probeer de lc-mongodb service te starten met het commando. Controleer na het ophalen de status van het proces met de opdracht.
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:/#
Als het proces in een actieve staat is, controleer opnieuw in een paar minuten om ervoor te zorgen dat het in een actieve staat blijft. U hoeft de database niet te repareren als deze in een functionerende staat blijft. Als het proces niet actief blijft, gaat u verder naar stap 7 en start u een reparatieproces.
Stap 7. Herstelling starten
Geef de opdracht uit
732smc:/# sudo -u mongodb /lancope/mongodb/bin/mongod --dbpath /lancope/var/database/dbs/mdb/ --repair
732smc:/#
Stap 8. Probeer de gerepareerde MongoDB te starten
Start de opdracht om de service te starten. Het proces moet in een actieve staat blijven en kan met het bevel worden gecontroleerd.
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