MySQL binlog の使用方法の詳細な説明

MySQL binlog の使用方法の詳細な説明

binlog は、MySQL のすべての DML 操作を記録するバイナリ ログ ファイルです。 binlog ログを通じて、データ復旧、増分バックアップ、マスター間レプリケーション、マスター スレーブ レプリケーションなどを実行できます。開発者は binlog にあまり注意を払わないかもしれませんが、運用や保守、アーキテクチャ担当者にとっては非常に重要です。

MySQL 5.7 では、デフォルトでは binlog が有効になっていません。有効にする方法の詳細については、https://www.jb51.net/article/207953.htm を参照してください。

binlog が正常に有効化されると、my.inf 構成ファイルで binlog ファイルの場所を確認できます。 MySQL コマンドラインでも表示できます。コマンドラインビューコードは次のとおりです。

'%log_bin%' のような変数を表示します。

現在のMySQLのbinlogの状況も見てみましょう

マスターステータスを表示します。 

上の図からわかるように、現在 binlog ファイルは 1 つだけあり、ファイル名は mysql-bin.000001 です。再起動するたびに、binlog ファイルが自動的に生成されます。再起動後に同じコマンドを再度実行すると、内容は次のようになります。

binlog が保存されているディレクトリにもこのようなファイルが存在します。

もちろん、binlog ファイルを手動で更新することもできます。ログをフラッシュすると、新しい binlog ファイルも作成されます。実際、サーバーが再起動されると、ログのフラッシュ操作も呼び出されます。

これらのファイルをすべて消去したい場合は、リセットマスターを使用して処理できます。

次に、単一のファイルの操作を見てみましょう。まず、ファイルの内容を確認します。

binlogディレクトリを探します。たとえば、mysql-bin.000001を確認します。

vi mysql-bin.000001 

意味不明な文字が並んでいます。これは一連のバイナリ ファイルであることはわかっているので、バイナリ ファイルをテキストとして開くと何か問題が発生するはずです。では、このファイルの内容を表示するにはどうすればよいでしょうか。

MySQLは、 mysqlbinlogと呼ばれるbinlogログを表示するためのツールを提供しています。

mysqlbinlog myql-bin.000001

このファイルはかなり長いです。一度で読み終えられない場合はどうすればいいでしょうか? Linux パイプを使用することができます。ここでは詳しく説明しません。Linux に関する知識は自分で調べることができます。

上記のスクリーンショットには位置フィールドがあることに注意してください。このフィールドはポインターに似ています。このフィールドの現在の値は 154 で、これはバイナリログの現在の位置を示しています。 DML 操作を実行するたびに、位置が変更されます。たとえば、データテストを作成しましょう

作成する前に、便宜上、binlog ログをクリアし、リセット マスターを使用できます。実稼働環境では、この操作は非常に危険なので、フラッシュ ログを使用して処理し、新しい binlog ファイルを生成することができます。使用する方法に関係なく、テスト環境では新しい binlog ファイルのみが必要です。新しいbinlogファイルを生成した後、show master statusでステータスを確認できます。

dmlステートメントを実行してみましょう。たとえば、テストデータベースを作成します。

データベーステストを作成します。

次に、作成後のステータスを確認してみましょう。以下に示すように、位置が 154 から 313 に変更されていることがわかります。これは、操作が 154 と 313 の間で行われていることを意味します。次に、binlog の内容を確認してみましょう。

次のように、154 から 313 の間の binlog の内容を傍受します。

# 154 で
 
#170708 9:24:02 サーバー ID 12345 end_log_pos 219 CRC32 0x30763ffe Anonymous_GTID last_committed=0 シーケンス番号=1
 
@@SESSION.GTID_NEXT を 'ANONYMOUS'/*!*/ に設定します。
 
# 219 で
 
#170708 9:24:02 サーバー ID 12345 end_log_pos 313 CRC32 0x4d0140b3 クエリ thread_id=5 exec_time=0 error_code=0
 
タイムスタンプを 1499477042/*!*/ に設定します。
 
@@session.pseudo_thread_id=5/*!*/ を設定します。
 
@@session.foreign_key_checks=1、@@session.sql_auto_is_null=0、@@session.unique_checks=1、@@session.autocommit=1/*!*/ を設定します。
 
@@session.sql_mode を 1436549152/*!*/ に設定します。
 
@@session.auto_increment_increment=1、@@session.auto_increment_offset=1/*!*/ を設定します。
 
/*!\C utf8 *//*!*/;
 
@@session.character_set_client=33、@@session.collat​​ion_connection=33、@@session.collat​​ion_server=8/*!*/ を設定します。
 
@@session.lc_time_names=0/*!*/ を設定します。
 
@@session.collat​​ion_database=DEFAULT/*!*/ を設定します。
 
データベーステストの作成
 
//*!*/;
 
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* mysqlbinlog によって追加されました */ /*!*/;
 
区切り文字 ;
 
# ログファイルの終了
 
/*!50003 COMPLETION_TYPE を @OLD_COMPLETION_TYPE に設定*/;
 
/*!50530 @@SESSION.PSEUDO_SLAVE_MODE を 0 に設定します*/;

MySQL は多くの暗黙的な操作を実行していることがわかります。注意深い友人は次の文に気付くでしょう: create database test;

バイナリログを簡単にまとめてみましょう:

1. サービスが開始すると、binlog ファイルが新しいファイルを作成します。

2. フラッシュログを使用して手動でログを更新し、新しいバイナリログファイルを生成することができます。

3. show master statusでbinlogのステータスを確認できます。

4. マスターをリセットすることで、binlogログファイルをクリアできます。

5. binlogログの内容はmysqlbinlogツールで表示できます。

6. dmlを実行すると、mysqlは自動的にbinlogを記録します。

MySQL binlog ログの詳細な使用方法に関するこの記事はこれで終わりです。MySQL binlog ログの使用に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLはデータ復旧を実装するためにbinlogログを使用する
  • MySQL binlog ログを開く方法
  • MySQLを監視するためのbinlogログ解析ツールの詳しい説明:Canal
  • MySQLデータベースのbinlogクリーンアップコマンドの詳細な説明
  • MySQL Binlog ログの読み取り時によくある 3 つのエラー
  • mysql binlog (バイナリログ) を表示する方法
  • mysql binlog ログを正しくクリーンアップする 2 つの方法
  • MySQL の binlog ログと、binlog ログを使用してデータを回復する方法を説明します。
  • MySQL データベースの Binlog 使用法の概要 (必読)
  • MySQL Binlog ログ処理ツールの比較分析

<<:  ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)

>>:  ウェブサイトのデザインでは色の階層感覚に注意を払う必要があります

推薦する

子コンポーネントを通じて親コンポーネントのプロパティを変更するための Vue のさまざまな実装方法

目次序文一般的な方法1. 親コンポーネントを介して子コンポーネントの発行イベントをリッスンしてpro...

デザイン理論:人の心を理解する方法

<br />かつて、仏印と東坡氏が仏教について雑談していたとき、東坡氏が突然こう言った。...

Winにmysqlをインストールする詳細な手順

この記事では、参考までにWinにmysqlをインストールする詳細な手順を紹介します。具体的な内容は次...

Reactのコンテキストとプロパティの説明

目次1. 文脈1. 使用シナリオ2. 使用手順3. 結論2. 小道具の詳細1. 子供の財産2. 小道...

mysql データ型変換の実装

1. 問題下図のような表があり、結果値がreference_high値より大きいデータを見つける必要...

UbuntuでMySQLデータベースファイルディレクトリを変更する方法

序文同社の Ubuntu サーバーは、さまざまなシステムのディレクトリを異なる論理パーティションに配...

Tomcat+Mysql の高同時実行構成の最適化の説明

1.Tomcatの最適化構成(1)Tomcatのcatalina.batを変更するJavaをサーバー...

Dockerコンテナイメージからコードを復元する手順

コードが失われ、コンテナ内で実行されているイメージから必要なコードを回復する必要がある場合があります...

JavaScript モバイル H5 画像生成ソリューションの説明

現在、WeChatパブリックアカウントの運用活動が多く、写真を生成する必要があります。生成された写真...

jsを使用してシンプルな弾幕スクリーンシステムを実装する

この記事では、弾幕効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的な...

ウェブサイト標準の検証方法を通じてFlashページを共有する方法

1. 埋め込みは違法です<embed> タグは Netscape のプライベート タグで...

使用したコマンドを表示するLinuxコマンドメソッドの概要

システムでは多くのコマンドが使用されていますが、使用したコマンドをどのように確認すればよいでしょうか...

Mysql5.7.17 winx64.zip 解凍バージョンのインストールと設定のグラフィックチュートリアル

1. mysql-5.7.17-winx64.zip をダウンロードします。リンク: https:/...

JavaScript コードベースをよりクリーンにする 5 つの方法

目次1. 短絡や条件文の代わりにデフォルトのパラメータを使用する2. 複数の条件の処理3. スイッチ...

MySQL で not in を使用して null 値を含める問題を解決する

知らせ! ! ! uid が (a,b,c,null) に含まれないユーザーから * を選択します。...