2017-01-07 2 views
3

Ich habe einen MongoDB-Client in drei EC2-Instanzen und ich habe einen Replikat-Satz erstellt. Das letzte Mal hatte ich ein Problem, von Speicherplatz constraint, die mein mongod Prozess gestoppt, wodurch die Anwendung und jetzt in einer Instanz vor ein paar Tagen zurück, einige meiner Tabellen wurden aus der Datenbank, so dass ich Protokollierung und alle auf meine Datenbank nur um fangen Sie an, wenn so etwas wieder passiert. Bei einem frischen Vorfall an diesem Morgen konnte ich mich nicht in mein System einloggen und da habe ich herausgefunden, dass die ganze Datenbank leer war. Ich überprüfte andere SO Fragen wie this, die vorschlagen, eine TTL.Which habe ich überhaupt nicht getan.
Nun, wie kann ich diese Situation debuggen und eine ordnungsgemäße Ursachenanalyse durchführen? Ich kann nicht einmal etwas in meinen Debug-Logs finden. Die Tische sind einfach verschwunden. Wie richte ich einen ordnungsgemäßen Protokollierungsmechanismus ein und wie stelle ich sicher, dass nie alle meine Tabellen jemals wieder gelöscht werden?Warum wird meine mongodb-Sammlung automatisch gelöscht?

+0

das ist seltsam - fast identische Frage hier - http://StackOverflow.com/Questions/41519988/mongodb-collections-unexpected-Deletion-Drop/41520214#41520214 – Alex

+0

Yeah ... Ich werde bald in Produktion gehen. So etwas kann nicht passieren. Ich habe deine Antwort gelesen. Könnte es nicht so sein, dass mongo die Datenbank wegen Speichermangel entfernt hat? –

+1

Nein, es würde nicht nur zufällig Sammlungen löschen - das wäre eine wirklich schlechte Sache zu tun (was es nicht tut) - definitiv versehentliches Löschen – Alex

Antwort

2

Heute habe ich eine E-Mail von Amazon bekommen, dass ich wahrscheinlich eine ungesicherte Version von MongoDB laufen habe und das könnte dieses Problem verursacht haben. Wer immer dieses Problem angeht, bitte gehen Sie durch die Security Checklist Provided by MongoDB. Es gibt einige Punkte, die unbedingt notwendig sind.
1. Access Control aktivieren und Erzwingen Authentifizierung
2. Verschlüsseln Kommunikation
3. Begrenzen Netzwerk Exposure

Diese drei sind der Kern und je nachdem, wie viele Menschen Ihre Datenbank Sie Configure Role-Based Access Control zugreifen können.

Das sind alles, was ich getan habe. Vor diesem Vorfall hatte ich die Sicherheit nicht so ernst genommen, aber nachdem ich davon getroffen wurde. Ich habe dafür gesorgt, dass ich alle notwendigen Vorkehrungen getroffen habe. Hoffe, das hilft jemandem.

Verwandte Themen