2017-08-07 3 views
0

mein Mongodb wurde heute gehackt, alle Daten wurden gelöscht, und Hacker benötigt eine Menge, um es zurückzubekommen, ich werde ihn nicht bezahlen, weil ich weiß, dass er mir meine Datenbank nicht zurücksenden wird.Kann ich Daten von Mongo Oplog wiederherstellen?

Aber ich hatte oplog einschalten, ich sehe es enthält über 300 000 Dokumente, Speichern aller Operationen.

Gibt es ein Tool, das meine Daten aus diesen Protokollen wiederherstellen kann?

Antwort

2

Je nachdem, wie weit Ihr oplog zurückliegt, können Sie die Bereitstellung möglicherweise wiederherstellen. Ich würde empfehlen, eine Sicherung des aktuellen Stands Ihrer dbpath für den Fall zu machen.

Beachten Sie, dass viele Variablen im Spiel sind, um eine Wiederherstellung wie diese durchzuführen, so dass Erfolg niemals eine Garantie ist. Es kann mit mongodump und mongorestore durchgeführt werden, aber nur wenn Ihr oplog zurück zum Anfang der Zeit (d. H. Wenn die Bereitstellung erstellt wurde). Wenn dies der Fall ist, können Sie in der Lage sein, Ihre Daten wiederherzustellen. Wenn dies nicht der Fall ist, werden während des Vorgangs Fehler angezeigt.

  1. Sichern Sie Ihre Bereitstellung, bevor irgendetwas anderes zu tun. Diese Situation ergibt sich aus einem Mangel an Sicherheit. In MongoDB sind umfangreiche Sicherheitsfunktionen verfügbar. Weitere Informationen finden Sie unter Security Checklist page.

  2. Entnehmen Sie die oplog-Sammlung mit mongodump --host <old_host> --username <user> --password <pwd> -d local -c oplog.rs -o oplogDump.

  3. Überprüfen Sie den Inhalt des oplog den Zeitstempel, um zu bestimmen, wenn der säumige Drop-Operation unter Verwendung bsondump oplogDump/local/oplog.rs.bson auftreten. Sie suchen nach einer Zeile, die etwa wie folgt aussieht:

    {"ts":{"$timestamp":{"t":1502172266,"i":1}},"t":{"$numberLong":"1"},"h":{"$numberLong":"7041819298365940282"},"v":2,"op":"c","ns":"test.$cmd","o":{"dropDatabase":1}}

    Diese Linie bedeutet, dass ein dropDatabase() Befehl auf der test Datenbank ausgeführt wurde.

    Notieren Sie sich den Wert t in {"$timestamp":{"t":1502172266,"i":1}}.

  4. Wiederherstellung auf eine sichere neue Bereitstellung mit mongorestore --host <new_host> --username <user> --password <pwd> --oplogReplay --oplogLimit=1502172266 --oplogFile=oplogDump/local/oplog.rs.bson oplogDump

    Hinweis der Parameter auf oplogLimit, die im Grunde mongorestore sagt die oplog zu stoppen Wiedergabe, sobald es diesen Zeitstempel treffen (was der Zeitstempel des dropDatabase Befehl ist in Schritt 3.

    der oplogFile Parameter ist neu in MongoDB 3.4. Für ältere Versionen, müssten Sie die oplogDump/local/oplog.rs.bson an der Wurzel des Dump-Verzeichnis in einer Datei oplog.bson, zBNamen kopierenund entfernen Sie den Parameter oplogFile aus dem obigen Beispielbefehl.

nach Schritt 4, wenn Ihr oplog zu dem Anfang der Zeit zurückgeht und Sie stoppen die oplog Replay zur richtigen Zeit, hoffentlich sollten Sie Ihre Daten an der Stelle sehen, kurz bevor der dropDatabase Befehl ausgeführt wurde.

+0

Vielen Dank! Ich habe meine Datenbank erfolgreich wiederhergestellt –

Verwandte Themen