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.
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.
Entnehmen Sie die oplog-Sammlung mit mongodump --host <old_host> --username <user> --password <pwd> -d local -c oplog.rs -o oplogDump
.
Ü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}}
.
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.
Vielen Dank! Ich habe meine Datenbank erfolgreich wiederhergestellt –