mysql5.7でbinlogを使用してデータを復元する方法

mysql5.7でbinlogを使用してデータを復元する方法

ステップ1: MySQLでbinlogが有効になっていることを確認する

'%log_bin%' のような変数を表示します。
log_bin はオンの場合有効になります。

ここに画像の説明を挿入

ステップ2: バイナリログファイルディレクトリに入り、バイナリログファイルを見つける

ここに画像の説明を挿入

mysql> show binary logs; # バイナリログファイルリストを取得しますmysql> show master status; # 現在書き込まれているバイナリログファイルを表示しますmysql> reset master; バイナリログをリセットします

ここに画像の説明を挿入

ステップ3: mysqlbinlogツールコマンドを使用して、データベースの追加、削除、変更、およびクエリレコードを表示します(有効にするにはmysqlbinlogディレクトリに切り替える必要があります)。または、binlogを直接指定します。

例 1 : 2021-3-12 14:00:00 から 2021-3-12 14:03:00 までの操作ログを照会します。データベースは g_xinxiangshop です。次のコマンドを入力して、データを予備の txt ファイルに書き込みます。

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

例 2 : 2021-3-12 14:00:00 から 2021-3-12 14:03:00 までのデータベース g_xinxiangshop の操作ログを照会し、g_user テーブルのデータのみを含む操作レコードをフィルター処理します。次のコマンドを入力して、データを予備の txt ファイルに書き込みます。

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 | grep g_user > /tmp/binlog.txt

例3 :2021-3-15 15:25:00から2021-3-15 15:35:00までのデータベースg_shoptestの操作ログを照会し、画面に出力します。
/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_shoptest --start-datetime="2021-3-15 15:25:00" --stop-datetime="2021-3-15 15:35:00" /data/mysql/mysql-bin.000001 |もっと見る

ここに画像の説明を挿入

画像は例 1 と例 2 と同じです。切り捨て操作と記録ポイントを確認した後、回復操作を実行できます。

ステップ4: bin_logを使用してデータを回復するテスト

mysqlにログイン
テスト

1.マスターをリセットし、binlogをリセットしてログを再生成する

ここに画像の説明を挿入

2.データを挿入し、その後誤って削除してテーブルをテストします。

ここに画像の説明を挿入

ここに画像の説明を挿入

3. bin-log コマンドを表示します: 'mysql-bin.000001' の binlog イベントを表示します。

ここに画像の説明を挿入

上の図に示すように、削除ポイントは928〜1294の間にあり、以前に追加されたデータは154〜520の間にあることがわかります。

ここに画像の説明を挿入

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --開始位置 154 --停止位置 520 | mysql -uroot -p g_shoptest

実行が完了したら、データを削除して復元したかどうかを確認します。

ここに画像の説明を挿入

binlog コマンド

1. 最も一般的に使用される方法は、指定されたデータ終了時にデータを復元することです。これは、データベースに直接復元できます。

mysqlbinlog --start-date="2021-3-12 14:00:00" --stop-date="2021-3-12 14:03:00" mysql_bin.000001 |mysql -uroot -p123456

2. 開始位置と終了位置を指定します。上記で生成されたバイナリ ログから、ログの開始位置と終了位置を知ることができます。リカバリ プロセス中に、位置 A から位置 B までのログを指定できます。指定するには、次の 2 つのパラメータが必要です。

  • --start-positon="50" // 50番地から開始することを指定します
  • --stop-position="100"// 位置 100 で終了するように指定します

/usr/local/mysql/bin/mysqlbinlog /usr/local/mysql/data/mysql-bin.000001 --開始位置 7903538 --停止位置 7904498|mysql -uroot -p123456

**一般的なエラーエラー: Log_event::read_log_event() のエラー: 'バイナリ ログに無効なイベントが見つかりました'、data_len: 31、event_type: 35

*この問題はmysqlbinlogのバージョンによって発生します

現在のOSで使用されているmysqlbinlogを表示する

シェル> mysqlbinlog
/usr/bin/mysqlbinlog

mysql で現在使用されている mysqlbinlog を表示します。

±--------------±------------------+
| 変数名 | 値 |
±--------------±------------------+
| ベースディレクトリ | /usr/local/mysql/ |
±--------------±------------------+

mysql> 'basedir' のような変数を表示します。

2つのバージョンを比較する

シェル> /usr/bin/mysqlbinlog --version
シェル> /usr/local/mysql/bin/mysqlbinlog --version

この問題を解決するには、mysqlbinlogパスを指定するだけです

/usr/local/mysql/bin/mysqlbinlog --no-defaults --database=g_xinxiangshop --start-datetime="2021-3-12 14:00:00" --stop-datetime="2021-3-12 14:03:00" /usr/local/mysql/data/mysql-bin.000001 > /tmp/binlog.txt

MySQL 5.7 で binlog を使用してデータを回復する方法に関するこの記事はこれで終わりです。MySQL binlog 回復の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL データベースのリカバリ (mysqlbinlog コマンドを使用)
  • MySQL の Binlog 関連コマンドとリカバリテクニック
  • MySQL バイナリログデータ復旧: 誤ってデータベースを削除した場合の詳細な説明
  • MySQL でデータ復旧に binlog を使用する方法
  • MySQLデータベースのログファイル(binlog)を自動的に復元する方法を説明します
  • Linux 上の binlog ファイルを使用して MySQL データベースを復元する詳細な手順
  • MySQL の binlog ログと、binlog ログを使用してデータを回復する方法を説明します。
  • MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。
  • MySQLはデータ復旧を実装するためにbinlogログを使用する
  • MySQL binlog を使用して誤って削除されたデータベースを復元する方法

<<:  Facebook によるインターネット サービスのほぼ完璧な再設計

>>:  VUEのデータプロキシとイベントの詳細な説明

推薦する

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

MySQLの遅いクエリ問題の詳細な分析データ送信

例を通して、MySQL のデータ テーブル送信のクエリが遅い問題の解決策を共有しました。最近、コード...

ウェブページのCSSの優先順位について詳しく説明します

CSS の優先順位について話す前に、CSS とは何か、CSS が何に使用されるのかを理解する必要があ...

Docker はすべてのコンテナをバッチ起動して閉じます

Dockerの場合すべてのコンテナコマンドを開始する docker を起動します $(docker ...

Vue3のレスポンシブ原則の詳細な説明

目次Vue2 レスポンシブ原則のレビューVue3 レスポンシブ原則の分析ネストされたオブジェクトの応...

Centos8 でローカル Web サーバーを構築するための実装手順

1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...

jQueryはショッピングカートの完全な機能を実現します

この記事では、ショッピングカートの完全な機能を実現するためのjQueryの具体的なコードを参考までに...

MySQL MGR 構築時の一般的な問題と解決策

目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...

Matlab による JavaScript プログラミング、重心アルゴリズムによる位置決め学習

目次Matlab セントロイドアルゴリズムMatlab はクローズドな商用ソフトウェアであり、米国政...

HTML+CSS でハートビートの特殊効果を作成する

今日は、シンプルなハートビート効果を作成します。多くのコードは必要ありません。ボックスを追加し、CS...

一般的な HTTP ステータス コード 10 個の詳細な説明

HTTP ステータス コードは、Web サーバーの HTTP 応答ステータスを示すために使用される ...

SQLの最適化では間違いがよく起こります。それはMySQLのExplain Planの使い方を理解していないからです。

目次1. 準備2. 説明計画の概要3. フィールドの詳細な説明4. パーティションクエリにはパーティ...

Tomcat の設定と Eclipse での起動方法

目次Tomcat8のインストールと設定方法tomcat ダウンロードTomcat マネージャーを有効...

XHTMLはHTMLのいくつかの廃止された要素を使用しなくなりました

CSS ウェブページレイアウトを行う場合、XHTML1.0 仕様に準拠する必要があることは誰もが知っ...

MySQL の時間設定に関する考慮事項の詳細な要約

時間は本当に存在するのでしょうか?時間は人間が考え出した概念に過ぎず、物事の変化を測る基準に過ぎない...