mysql バイナリ ログを使用してデータベース削除コマンドから復元するにはどうすればよいですか?
質問
「drop database」コマンドを使用して削除された mysql データベースを復元するにはどうすればよいですか?このタイプのロールバックを可能にするバイナリ ログにアクセスできるようになりました。
解決
ドキュメントは最低だ。これは、DROP DATABASE が回復可能であることをほのめかしていますが、私がよく知らない奇妙な状況でのみ回復可能です http://dev.mysql.com/doc/refman/5.0/en/binary-log.html
Docs によると、binlog は、指定された参照ポイントに基づいて実行される一連のコマンドにすぎません。そのため、「DROP DATABASE」を実行したときに、「ああ、データベースを削除するんだ。念のためバックアップしておこう」と思うのではなく、単に「DROP DATABASE」を最後のバイナリログに書き込むだけです。リカバリはテープを逆再生するほど簡単ではありません。
行う必要があるのは、最新の正常な状態からデータベースをリカバリし、そのリカバリ ポイントと DROP コマンドの間に発生したバイナリログを適用することです。
http://dev.mysql.com/doc/refman/5.0/en/recovery-from-backups.html
どのバイナリログを使用するかをどのように決定するかは不明です。
ファイル システムの完全バックアップを作成することほど優れたものはありません。そして、少なくともこれらを頼りにする必要があります。
他のヒント
データベースのバックアップがない場合は、運が悪いです。 落とすデータベースの保存は永続的です。
バックアップがあると仮定すると、バイナリ ログには、そのバックアップ以降に発生した内容が保持されます。mysqlbinlog ユーティリティを使用すると、次のようなことができます。
mysqlbinlog the_log_file > update.sql
ただし、そのファイルを編集して、再度実行したくないもの(データベース削除ステートメントなど)を削除する必要があるかもしれません。
幸運を!
バックアップもパーティーもありません。
そこで私はこう答えます:
二度と同じような状況に陥らないように、超シンプルかつ超強力な automysqlbackup をインストールしてください (Linux を使用している場合)。
sudo apt-get install automysqlbackup
それを設定します:
sudo nano /etc/default/automysqlbackup
次に、そのコンテンツを Dropbox、ubuntu one、または同様のものに自動的にアップロードします。
そうしてこそ幸せに生きてください:)
Kent Fredric の答えを補足するために、ロールバックできます。 drop database
データベースの作成以来バイナリ ログを使用している場合は、コマンドを実行します。