我的mongodb今天遭到黑客入侵,所有數據都被刪除,黑客需要一定數額才能還清,我不會付錢給他,因爲我知道他不會將我的數據庫發回給我。我可以從mongo oplog恢復數據嗎?
但我已經oplog打開,我看到它包含超過30萬個文件,保存所有操作。
是否有任何工具可以從此日誌恢復我的數據?
我的mongodb今天遭到黑客入侵,所有數據都被刪除,黑客需要一定數額才能還清,我不會付錢給他,因爲我知道他不會將我的數據庫發回給我。我可以從mongo oplog恢復數據嗎?
但我已經oplog打開,我看到它包含超過30萬個文件,保存所有操作。
是否有任何工具可以從此日誌恢復我的數據?
根據oplog的背後距離,您可以恢復部署。爲了以防萬一,我會建議您對dbpath
的當前狀態進行備份。
請注意,有許多變量用於執行此類還原,因此成功絕不是保證。可以使用mongodump
和mongorestore
完成,但前提是您的oplog要回到開始時間(即部署首次創建時)。如果是這樣,您可以可能能夠恢復您的數據。如果沒有,你會在這個過程中看到錯誤。
安全做其他事情之前,你的部署。這種情況是由於缺乏安全性而產生的。 MongoDB中提供了廣泛的安全功能。詳情請查看Security Checklist page。
使用mongodump --host <old_host> --username <user> --password <pwd> -d local -c oplog.rs -o oplogDump
轉儲oppo集合。
檢查oplog的內容以確定使用bsondump oplogDump/local/oplog.rs.bson
發生有問題的丟棄操作時的時間戳。你在尋找一條線,看起來大約是這樣的:
{"ts":{"$timestamp":{"t":1502172266,"i":1}},"t":{"$numberLong":"1"},"h":{"$numberLong":"7041819298365940282"},"v":2,"op":"c","ns":"test.$cmd","o":{"dropDatabase":1}}
此行意味着一個dropDatabase()
命令的test
數據庫上執行。
請注意{"$timestamp":{"t":1502172266,"i":1}}
中的t
值。
恢復使用mongorestore --host <new_host> --username <user> --password <pwd> --oplogReplay --oplogLimit=1502172266 --oplogFile=oplogDump/local/oplog.rs.bson oplogDump
注意參數oplogLimit
,這基本上是告訴mongorestore
停止重播OPLOG一旦打的時間戳(這是dropDatabase
命令的時間戳安全的新部署第3步:
的oplogFile
參數是新的MongoDB 3.4。對於舊版本,你需要的oplogDump/local/oplog.rs.bson
複製到轉儲目錄的根目錄名爲oplog.bson
文件,如並從上面的示例命令中刪除oplogFile
參數。
第4步後,如果您OPLOG回到剛開始的時候,你停在正確的時間OPLOG重播,希望你應該執行該命令dropDatabase
之前的點看到你的數據。
謝謝!我已成功恢復我的數據庫 –