仕事では、我々は誤ってデータやデータベースを削除し、我々はそれを実行している時に必要になりますか?私はプログラマは誰もがデータバックを知らなくても、自分自身を助けるために学ばなければならない、とは思いません。
MySQLのデータベースでは、我々はすべてのデータベース上の事業のbinlogのログレコードを知っているので、バイナリログログは、私たちのセルフヘルプツールです。
そして、自助プログラマーへの道をオンにします。
成功した自助、武器は自分の前に良いことがありますビンログをしたい、我々はバイナリログにこの武器を持っていることを確認する必要があり、それは以下の操作がbinlogの武器を持っていることを確認することです。
1、データベースがオープンbinlogのログであるかどうかを確認
show variables like 'log_%';
そうでない場合はオンになっていない示しONになっている場合、赤い丸を探検。その後、次の操作を行う必要があり、開きません。
2、オープンbinlogのログ
binlogのログが開いていない場合は、お使いのコンピュータがwindownsが発見された場合、MySQLの設定ファイルでのbinlogログ、セットをオンにする必要がmy.ini
見つけるファイル、UNIXシステムmy.cnf
ファイルを。変更は、ファイル内のパラメータを設定します。
# Binary Logging.
#日志文件的名字及存储路径
log-bin=D:\Mysql-binlog\mysql-bin
#设置日志格式
binlog-format=mixed
どのビンログ形式は、 3つのオプションがあります。
- なステートメント:各SQLステートメントは、データがバイナリログに記録されます変更します。
- ROW:コンテキスト情報に各SQLステートメント、レコードが変更されたレコードのみを記録していません。
- MIXED:操作上の使用ROWモードSTATEMENTモードのための少なくとも2つのモードの混合物で、バイナリログ保存ステートメントを使用して、通常のコピーモードは、バイナリログを保存するためにコピーすることができない、MySQLは、実行ログよるSQL文の保存を選択します。
3、MySQLサーバを再起動します
図4は、すべての成功を記録BINLOG再確認しました。
まあ、いくつかの手順は、上記の操作を完了した後、我々は自分自身を助ける方法を学ぶことができ、我々は誤って削除したデータが誤って自分自身を保存する方法を誤って削除ライブラリーの場合には、テーブルを削除し、実証する3つのシナリオを使用していました。
特定のシナリオに入る前に、のは、デモ・データベースのテーブルとデータニーズを用意しましょう。
データベースを作成します。1.pingtouge
create database pingtouge;
2、学生のテーブルを作成します
create table student(
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
num VARCHAR(40) NOT NULL,
PRIMARY KEY (id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、挿入データ
insert into student(name,num)values('张三','1234');
insert into student(name,num)values('李四','1235');
あなたはデータを持っていたら、あなたは正式にシーンを入力することができ、あなたは準備ができていますか?
シーンワン:誤ったデータのいくつかの作品を削除
学生誤ってテーブルのid = 1件のデータが削除されました。方法は?
メモリを使って手動でこのデータを挿入?ないないようなすごい、思い出すことができますが、使用のbinlogログは王は天才です。
使用するshow master status
コマンドを、最新のバイナリログのログファイルを表示します。
最新のバイナリログのログファイルを取得した後、使用してshow binlog events in 'mysql-bin.000043';
以下のように、バイナリログログファイルを表示するためのコマンドを:
ビンログログは、これら二つを相殺するために使用されるデータ復旧の際に、提出前の文のオフセット及び提出を含め、データベース上で私たちのすべての操作を記録します。
mysqlbinlogは:正式にデータ復旧に入る前に、我々は最初のMySQLが提供するツールを知って来ます。binlogのログファイルが動作するために使用されてmysqlbinlogは、我々はそれにデータ復旧を使用する必要があります。
バイナリログファイルを回復するmysqlbinlogはを使用して、コマンドの形式は次のとおりです。
mysqlbinlog binlog日志文件 --start-position 初始偏移量的位置 --stop-position 结束偏移量的位置 | mysql -u root -p 数据库名称;
私たちは、学生のテーブルIDを見つける=最後の演算のオフセットと終わりは、私がすでに示されている、上の図では、バイナリログログファイルを削除する前に、1つのデータを開始オフセット、開始オフセットこれは、次のとおりです。710、最後のオフセットがある:996。これら2つのパラメータの後で、我々は、データを復元するためにmysqlbinlogはコマンドを使用することができます。
実行:
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 710 --stop-position 996 | mysql -u root -p pingtouge;
コマンドが成功した場合は、再度実行してselect * from student
、データ回復かどうかを確認するためのコマンドを。
我々が見ることができ、上の図から、我々は成功した学生のテーブルID = 1このデータを復元しました。
シーン2:誤って削除したデータシート
誤ってテーブルの学生が削除されます。
誤ってテーブルを削除するために、また回復するbinlogのログを使用することができ、MySQLの事業のすべてのすべてのbinlogの日記を記録した後、単一のデータ復旧のように、我々はまた、開始オフセットとバイナリログログファイルに終了オフセット見つける必要がありますデータを復元するために、量をシフト。
単一のデータと、それは同じではありません、オフセットテーブル、開始オフセットが作成、テーブルの前に開始するようにオフセットされ、終了オフセットは、データベースを削除オフセットの終了前に最後のものです。次のように示します:
写真不完全なカットは、私は2つの数字を分割します。同様に、私たちは学生のテーブルを復元するためにmysqlbinlogはを使用して、実行します。
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 393 --stop-position 1997 | mysql -u root -p pingtouge
コマンドの完了後、再実行select * from student;
、あなたは私たちのデータバックがあります。
シーン3:誤って削除されたデータベース
あなたが置くので、あなたは、それを実行しているの削除ライブラリへの準備ができて、仕事でいじめpingtouge
削除するデータベースを実行する方法を、あなたはそれを後悔し終えた後、削除しますか、?オンライン。
慌てないでください、バイナリログログ全能では、直前の2つのシナリオのように、あなたを救うことができ、またはデータベースを復元する必要があるためで問い合わせbinlogのログは、開始オフセットと終了オフセット。私はスクリーンショットはありません。
ビンログは、データベースを作成するために、ログを見て、見つけpingtouge
219をオフセットし、最終的に3861のためのライブラリを削除する前にオフセット始まり、これら2つのオフセットの到着は、実行します。
mysqlbinlog d:\Mysql-binlog\mysql-bin.000043 --start-position 219 --stop-position 3861 | mysql -u root -p
実行、発見とデータベースの後、最後に、データベースを持参する必要はないことに注意してくださいpingtouge
データにすべてのバック-関連。
削除ライブラリー、そして私たちは、ティーンエイジャー、自分自身を助けるために学ばなければならない、離れて実行する必要はありません。
そして、のシェアのコンテンツということ、あなたが前方に良いエッセイ、称賛と歓迎のポイントを感じる場合は、あなたに感謝し、あなたが学ぶ助けたり仕事をしたいです。
遂に
現在、インターネット上で大物のMySQLデータ復旧関連の記事や任意の類似性をたくさん持っている、私を許してください。元は容易ではない、コードワードは容易ではないですが、また、我々がサポートできることを願っています。また、テキストに誤ったが、何かがなさ見ると、あなたに感謝します。
マイクロチャネル注目コード番号掃引へようこそ:「インターネットフラットヘッドの男」、一緒に学び、マイナスの弟を、一緒に進行します。