2017-08-22 4 views
2

Wir verwenden mongoDB als DBMS für unsere Produktionsdatenbank. Wir haben 2 Replica-Sets für unsere Datenbank aktiviert.dropDatabase wird für alle Datenbanken in mongoDB mit Replikatsätzen aufgerufen

Aus heiterem Himmel haben wir festgestellt, dass beide Datenbanken in unserer Produktion fallengelassen wurden. Wir sind absolut sicher, dass niemand mit Zugang das getan hat. Als wir die Protokolle durchforsteten, bemerkten wir, dass dropDatabase in beiden Datenbanken tatsächlich aufgerufen wurde. Für den Verbindungsaufbau konnten wir jedoch keine Protokollanweisungen finden. Wenn jemand mongo shell oder bash benutzt hat, um die DB zu löschen, sollte es auch Protokolle für neue Verbindungen geben.

Log-Anweisung für Primär:

2017-08-17T14:38:47.019+0000 I -  [conn527] AssertionException handling request, closing client connection: 17132 SSL handshake received but server is started without SSL support 
2017-08-22T00:18:22.694+0000 I COMMAND [conn541] dropDatabase db1 starting 
2017-08-22T00:18:22.708+0000 I COMMAND [conn541] dropDatabase db1 finished 
2017-08-22T00:18:23.832+0000 I COMMAND [conn542] dropDatabase db2 starting 
2017-08-22T00:18:23.843+0000 I COMMAND [conn542] dropDatabase db2 finished 

Wie aus dem Zeitstempel der ersten Zeile ganz klar ist, gab es keine neue Verbindung mit dem Mongo Server hergestellt in letzten 5 Tagen

Kann jemand bitte Hilf uns zu verstehen, was genau mit unserem mongodb-Server passiert ist. Außerdem werden alle Hinweise sehr geschätzt.

+0

Um herauszufinden, "wer" war Verbindung 541, Suche durch mongodb Protokolle (Wenn Sie genug Protokolldateien haben) 'grep -R '\ # 541" * .log' – JJussi

+0

Wir haben Logs für die letzten 3 Monate und konnten keine Verbindung 541 oder 542 finden. Können Sie uns bitte irgendeinen anderen Zeiger geben? – thrust

+0

Das ist sehr seltsam, da alle Ereignisse "Verbindung akzeptiert von x.x.x.x" normal protokolliert werden. Und Ihre älteren Dateien, die Sie grep waren nicht "zip" (nur zu überprüfen). Dann hat 'jemand' diese Zeile entfernt. – JJussi

Antwort

0

Wenn die Instanz noch ausgeführt werden Sie ein

db.adminCommand({ getLog: "global" }) 

um, was passiert ist, um herauszufinden, ausgeben können. Der getLog Befehl liest das MongoDB-Protokoll aus dem RAM und nicht aus der Protokolldatei - nur für den Fall, dass jemand die Protokolldatei manipuliert hat ...

+0

Vielen Dank für Ihren Vorschlag. Allerdings hatten wir den Server früher neu gestartet. Also, ich fürchte, das wird nicht helfen. Haben Sie einen anderen Zeiger im Kopf? – thrust

Verwandte Themen