2017-08-07 17 views
0

私のmongodbは今日ハッキングされました。すべてのデータが削除され、ハッカーはそれを元に戻すためにいくらかの金額を必要とします。私は彼に支払うことはありません。mongo oplogからデータを復元できますか?

しかし、私はオンになっている、私はそれがすべての操作を保存し、300000以上の文書が含まれて参照してください。

このログから自分のデータを復元できるツールはありますか?

答えて

2

oplogの距離によっては、展開を復元することができます。場合によってはdbpathの現在の状態をバックアップすることをおすすめします。

このような復元を行うためには、多くの変数がありますので、成功することは決して保証されません。これはmongodumpmongorestoreを使用して行うことができますが、oplogが最初に戻ったとき(つまり、最初にデプロイメントが作成されたとき)にのみ実行されます。そうであれば、にデータを復元できる可能性があります。表示されない場合は、処理中にエラーが表示されます。

  1. 何かを行う前に、デプロイメントを固定します。この状況は、セキュリティの欠如のために発生します。 MongoDBには広範なセキュリティ機能があります。詳細はSecurity Checklist pageをご覧ください。

  2. mongodump --host <old_host> --username <user> --password <pwd> -d local -c oplog.rs -o oplogDumpを使用してダンプします。

  3. bsondump oplogDump/local/oplog.rs.bsonを使用して、問題のドロップ操作が発生したときのタイムスタンプを確認するために、oplogの内容を確認してください。この行はdropDatabase()コマンドはtestデータベース上で実行されたことを意味し

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

    :あなたは、およそ次のような行を探しています。

    tの値は{"$timestamp":{"t":1502172266,"i":1}}に留意してください。 mongorestore --host <new_host> --username <user> --password <pwd> --oplogReplay --oplogLimit=1502172266 --oplogFile=oplogDump/local/oplog.rs.bson oplogDump

    注意基本的にはそのタイムスタンプを打つ一度dropDatabaseコマンドのタイムスタンプではある(oplogの再生を停止するmongorestoreを言っているoplogLimitにパラメータを使用して、安全な新しい展開に

  4. 復元ステップ3

    oplogFileパラメータは、MongoDBの3.4に新しく追加されました。古いバージョンでは、あなたが例えば、oplog.bsonという名前のファイルにダンプディレクトリのルートにoplogDump/local/oplog.rs.bsonをコピーする必要がありますを入力し、上記のコマンド例のoplogFileパラメータを削除します。ステップ4の後

あなたのoplogは、時間の最初に戻り、あなたが適切なタイミングでoplog再生を停止した場合、うまくいけば、あなたはdropDatabaseコマンドが実行された直前の時点で、あなたのデータが表示されるはずです。

+0

ありがとうございました!私は正常に私のデータベースを復元しました –

関連する問題