誤って削除されたデータを回復するためにmysqlの使用mysqlbinlogはコマンド

実験環境:
MYSQL 5.7.22
チーオープンバイナリログ
ログ形式が混在します
実験手順:
1、実行:FLUSHログ。
マスター-bin.000014新しいファイルが生成されたファイル
 
 
実験では、実験の全過程の内容を観察するために、コンテンツより直感的かつ簡単にリフレッシュしてログインします。
私は、RESTのMASTERを使用してオンライン多くの記事を見てきました。しかし、このコマンドの深刻さを説明できません
このコマンドは、すべてのログファイルを削除し、ファイル名がゼロにリセットされ、ポイントを記録し、例99%が、このコマンドに満ちません
削除ログは、PURGE MASTER LOGS ...ので、少し保険を使用することができます
2、新しいログファイルは、コンテンツを初めて目に生成されている、あなたが知っておく必要があるいくつかのポイントがあります
 
 
見るバイナリファイルの日付logコマンド:mysqlbinlogはマスター-bin.000014
#4で
#180903午後04時19分12秒、サーバID 1 end_log_pos 123 CRC32 0xe03659b3スタート:binlogのV 4、サーバV 5.7.22-logが作成180903午後04時19分12秒
上の2つの矢印を見てください:
4(イベントの開始点)に#
#180903午後四時19分12秒(時間の代表)
サーバID 1(それぞれ独自のデータベースのMySQLサーバIDのためのプライマリおよびバックアップ・コピーを指定して、私はデフォルトの1で構成されていません)
end_log_pos 123(イベント終了点)
2つの矢印の下に見て:
123に#(トップイベントのイベントの開始点と終了点が対応しています)
end_log_pos 154(イベント終了点)
4〜123でのコンテンツは、イベントの内容であります
3、シミュレートされたビジネスシナリオ、ビルドテーブル、挿入データ、そして最後にテーブルを削除し、本当のために、私は2つのライブラリーを構築し、異なるライブラリーへの書き込み、そして最終的に、ライブラリ内のテーブルを削除します。
> FLUSH LOGSのmysqlの。
クエリOK、影響を受けた0行(0.01秒)
MySQLの>データベースT1を作成します。
クエリOK、影響を受けた1行(0.03秒)
MySQLの>データベースT2を作成します。
クエリOK、影響を受けた1行(0.00秒)
MySQLの>使用さt1;
データベースの変更
mysqlの>テーブルt1(ID int型)を作成します。
クエリOK、影響を受けた0行(0.03秒)
MySQLの>使用さt2;
データベースの変更
mysqlの>テーブルt2(ID int型)を作成します。
クエリOK、影響を受けた0行(0.03秒)
MySQLの>インサートT2値(3)に、
クエリOK、影響を受けた1行(0.01秒)
MySQLの>インサートT2値(4)に、
クエリOK、影響を受けた1行(0.01秒)
MySQLの>使用さt1;
データベースが変更され
、T1の値(1)内のMySQL>インサート。
クエリOK、影響を受けた1行(0.01秒)
MySQLの>インサートT1値(2)に、
クエリOK、影響を受けた1行(0.01秒)
MySQLの>使用さt2;
データベースが変更さ
t2の値(20)内のMySQL>インサート。
クエリOK、影響を受けた1行(0.01秒)
MySQLの>使用さt1;
データベースが変更さ
T1の値(10)内のMySQL>インサート。
クエリOK、影響を受けた1行(0.01秒)
MySQLの>ドロップテーブルT1。
クエリOK、影響を受けた0行(0.02秒)
MySQLの>使用さt2;
データベースが変更さ
t2の値(222)内のMySQL>インサート。
クエリOK、影響を受けた1行(0.01秒)
MySQLの>
T1、T2テーブルを確立し、T1、T2のライブラリーを確立します。
データT1を挿入するには:1,2,10を
データT2を挿入するには:3,4,20,222を
シミュレーションシナリオ、削除テーブルT1、T2 T2テーブルの図書館サービスは実行を続け
 
T1は現在のログテーブルを介して復元されます。
まず、削除コマンドログポイントを見つけることがあります。
mysqlbinlogはマスター-bin.000014 | grepを-5aの "DROP TABLE"
 
 
2439を参照してください#AT(この番号をメモ)
実行するには、このイベントでのDROP TABLEポイント。
ログファイル内のログT1だけでなく、ライブラリ以来、だけでなく、T2ライブラリのログは、データベースのログT1がかかります
そして、また、ちょうど2439年前にログログポイントを取る、その後、再適用
私たちは2439年のログを取る場合は、再度データベースにテーブルを作成するためのデータベースアプリケーション、挿入データを再構築されたときに、テーブルを削除この文の実装となります。
 
 mysqlbinlogは-d T1 --stop位置= 2439マスタbin.000014> test.sql内(実際に与えられ、このステートメントを実行します)
警告:使用されてきた--databaseオプション。これは、トランザクションの一部をフィルタリングすることができるが、いずれにしてもGTIDsが含まれます。除外するやトランザクションが含まれている場合は、代わりに、それぞれのオプションは、または--include-gtids-gtidsを--exclude使用する必要があります。
暂时弄不清楚原因、百度了下修改成:
mysqlbinlogはマスタbin.000014 -d T1 --skip-gtids --stop位置= 2439> test.sql内
-d:指定するパラメータは、データベース・ログがあります
コマンド手段test.sql内に2439年マスターポイントの前にログbin.000014日志文件内的T1データベース・ログ、イベント、出力その
#テールtest.sql内
ファイルの最後の数行を見てください
 
ログデータベース:
MySQLの>使用さt1;
データベースが変更されました
MySQLの>ソースtest.sql内
真ん中のエラー、文の中T1を含むデータベースを構築するため。
目次を見ます
 
 
そのデータバックので。
----------------
免責事項:この記事はCSDNのブロガー燃料酢0」オリジナル記事です、CC 4.0 BY-SAの著作権契約書に従って、再現し、元のソースのリンクを添付してくださいそしてこの文。
オリジナルリンクします。https://blog.csdn.net/chaigang/article/details/82350399

おすすめ

転載: www.cnblogs.com/yaoyangding/p/12237352.html