実験環境:MYSQL 5.7.22 バイナリログを有効にする ログ形式 MIXED 実験プロセス:1. 実行: FLUSH LOGS; master-bin.000014ファイルは新しく生成されたファイルです ログを更新する目的は、実験内容をより直感的にし、実験プロセス全体の内容を観察しやすくすることです。 REST MASTER を使用する記事をオンラインで多数見てきましたが、このコマンドの重要性については説明されていません。 このコマンドは、すべてのログ ファイルを削除し、ファイル名とログ ポイントをゼロにリセットします。99% の場合、このコマンドは必要ありません。 ログを削除するには、PURGE MASTER LOGSを使用できます...これはより安全です 2. 新しいログファイルが生成されました。まずは内容を確認してみましょう。理解しておくべき点がいくつかあります。 バイナリ ログ ファイルを表示するコマンド: mysqlbinlog master-bin.000014 # 4時 #180903 16:19:12 サーバー ID 1 end_log_pos 123 CRC32 0xe03659b3 開始: binlog v 4、サーバー v 5.7.22-log 作成 180903 16:19:12 まず、上の 2 つの矢印を見てください。
下の 2 つの矢印を見てください。
3. ビジネス シナリオをシミュレートし、テーブルを作成し、データを挿入し、最後にテーブルを削除します。現実的にするために、2 つのデータベースを作成し、異なるデータベースに同時にコンテンツを書き込み、最後にデータベースの 1 つでテーブルを削除しました。 mysql> ログをフラッシュします。 クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> データベース t1 を作成します。 クエリは正常、1 行が影響を受けました (0.03 秒) mysql> データベース t2 を作成します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> t1 を使用します。 データベースが変更されました mysql> テーブル t1 (id int) を作成します。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) mysql> t2 を使用します。 データベースが変更されました mysql> テーブル t2 (id int) を作成します。 クエリは正常、影響を受けた行は 0 行 (0.03 秒) mysql> t2値に挿入(3); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> t2値に挿入(4); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> t1 を使用します。 データベースが変更されました mysql> t1値に挿入(1); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> t1値に挿入(2); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> t2 を使用します。 データベースが変更されました mysql> t2 に値を挿入します(20); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> t1 を使用します。 データベースが変更されました mysql> t1 に値を挿入します(10); クエリは正常、1 行が影響を受けました (0.01 秒) mysql> テーブル t1 を削除します。 クエリは正常、影響を受けた行は 0 行 (0.02 秒) mysql> t2 を使用します。 データベースが変更されました mysql> t2 に値(222)を挿入します。 クエリは正常、1 行が影響を受けました (0.01 秒) マイSQL> T1 および T2 ライブラリを作成し、T1 および T2 テーブルを作成します。 T1にデータを挿入: 1、2、10 T2にデータを挿入: 3、4、20、222 シミュレーション シナリオでは、テーブル T1 は削除されますが、データベース T2 内のテーブル T2 のビジネスは引き続き実行されます。 ここで、ログを通じて T1 テーブルを復元します。 まず、削除コマンドのログポイントを見つけます。 mysqlbinlog master-bin.000014|grep -5a "テーブルを削除" #AT 2439 を参照してください (この番号を書き留めてください) このイベント ポイントで実行された DROP TABLE 操作。 ログ ファイルには T1 データベースのログだけでなく、T2 データベースのログも含まれているため、T1 データベースのログのみを取得します。 そして、ログポイント2439より前のログのみが取得され、再適用されます。 2439 ログが取得された場合、データベースはデータベースとテーブルを再構築し、データを挿入し、再度適用されたときにテーブル削除ステートメントを実行します。 mysqlbinlog -d t1 --stop-position=2439 master-bin.000014>test.sql (このステートメントの実行時にエラーが報告されました)
mysqlbinlog マスターbin.000014 -d t1 --skip-gtids --stop-position=2439>test.sql -d: パラメータはデータベースログを指定します このコマンドは、master-bin.000014ログファイル内のT1データベースログ、イベントポイント2439より前のログをtest.sqlに出力することを意味します。 # 末尾のテスト.sql ファイルの最後の数行を見てください データベースにログインします: mysql> t1 を使用します。 データベースが変更されました mysql> ソース test.sql データベース T1 を構築するためのステートメントが含まれていたため、途中でエラーが 1 回報告されました。 表の内容をもう一度確認してください このようにしてデータが返されます。 これで、mysqlbinlog コマンドを使用して誤って削除されたデータを回復する方法に関するこの記事は終了です。mysqlbinlog を使用して誤って削除されたデータを回復する方法の詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: docker run後にコンテナがExited (0)と表示される問題を解決する
序文デフォルトでは、Nginx ログはファイルに書き込まれます。各ドメインのログを区別するために、通...
簡単なチュートリアルこれは CSS3 カラー プログレス バー アニメーション効果です。 CSS3 ...
MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...
目次序文アイデアの起動速度Tomcat ログが文字化けしている序文Idea を再インストールしたので...
コアコード <!DOCTYPE html> <html lang="ja...
** CentOS7 で yum ソースをインストールし、rz および sz コマンドをアップロー...
序文:データベースを日常的に使用すると、パスワードが単純すぎて変更する必要がある場合、パスワードの有...
1. フローティング方式を使用する効果画像: コードは次のとおりです: (.content の高さは...
目次概要解決策 1: クロージャ解決策2: 構造を分割する解決策3:解決策4: setTimeout...
前回の記事では、JS を使って簡単な揺れ効果を実現する方法を紹介しました。ご興味があればクリックして...
<html> <ヘッド> <meta http-equiv="...
1. 中国語入力方法を設定する 2. ダブルスペルモードを設定する 3. 注意事項20.04 で S...
クイックスタート1. Docker Hubでnginxイメージを見つけるdocker 検索 ngin...
1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...
目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...