MySQL マスターライブラリ binlog (master-log) とスレーブライブラリ relay-log 間のコードの詳細な説明

MySQL マスターライブラリ binlog (master-log) とスレーブライブラリ relay-log 間のコードの詳細な説明

メインライブラリのバイナリログ:

# 2420 で
#170809 17:16:20 サーバー ID 1882073306 end_log_pos 2451 CRC32 0x58f2db87 Xid = 32880
専念 /*!*/;
# 2451 で
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2528 CRC32 0x40774a4b クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680038/*!*/ に設定します。
始める
//*!*/;
# 2528 で
# 2560 で
#170814 11:07:18 サーバーID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
INSERT_IDを107/*!*/に設定します。
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680038/*!*/ に設定します。
t2 (名前) 値に挿入 ('a100')
//*!*/;
# 2669 で
# 2701 で
#170814 11:07:27 サーバーID 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
INSERT_IDを108/*!*/に設定します。
#170814 11:07:27 サーバー ID 1882073306 end_log_pos 2810 CRC32 0x78466d7b クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680047/*!*/ に設定します。
t2(名前)値('a200')に挿入
//*!*/;
# 2810 で
# 2842 で
#170814 11:07:30 サーバーID 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
INSERT_IDを109/*!*/に設定します。
#170814 11:07:30 サーバー ID 1882073306 end_log_pos 2951 CRC32 0xebeb947c クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680050/*!*/ に設定します。
t2(名前)値('a300')に挿入
//*!*/;
# 2951 で
#170814 11:07:34 サーバー ID 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
専念 /*!*/;

ライブラリのリレーログから:

/*!50530 @@SESSION.PSEUDO_SLAVE_MODE を 1 に設定します*/;
/*!40019 @@session.max_insert_delayed_threads を 0 に設定します*/;
/*!50003 @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0 に設定*/;
区切り文字 /*!*/;
# 4時
#170809 17:17:24 サーバー ID 1882083306 end_log_pos 120 CRC32 0x5df4221c 開始: binlog v 4、サーバー v 5.6.23-72.1-log 作成 170809 17:17:24
# 120 で
#700101 8:00:00 サーバー ID 1882073306 end_log_pos 0 CRC32 0x0b8a412f test-mysql-bin.000116 にローテーション pos: 2451
# 172 で
#170809 16:28:12 サーバー ID 1882073306 end_log_pos 0 CRC32 0xd0d3bf30 開始: binlog v 4、サーバー v 5.6.23-72.1-log 作成 170809 16:28:12
# 288 で
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2528 CRC32 0x40774a4b クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680038/*!*/ に設定します。
@@session.pseudo_thread_id=92/*!*/ を設定します。
@@session.foreign_key_checks=1、@@session.sql_auto_is_null=0、@@session.unique_checks=1、@@session.autocommit=1/*!*/ を設定します。
@@session.sql_mode を 1073741824/*!*/ に設定します。
@@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=33/*!*/ を設定します。
@@session.lc_time_names=0/*!*/ を設定します。
@@session.collat​​ion_database=DEFAULT/*!*/ を設定します。
始める
//*!*/;
# 365 で
# 397 で
#170814 11:07:18 サーバーID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
INSERT_IDを107/*!*/に設定します。
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 クエリ thread_id=92 exec_time=0 error_code=0
`db1`/*!*/ を使用します。
タイムスタンプを 1502680038/*!*/ に設定します。
t2 (名前) 値に挿入 ('a100')
//*!*/;
# 506 で
# 538 で
#170814 11:07:27 サーバーID 1882073306 end_log_pos 2701 CRC32 0xcf89b910 Intvar
INSERT_IDを108/*!*/に設定します。
#170814 11:07:27 サーバー ID 1882073306 end_log_pos 2810 CRC32 0x78466d7b クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680047/*!*/ に設定します。
t2 (名前) 値に挿入 ('a200')
//*!*/;
# 647 で
# 679 で
#170814 11:07:30 サーバーID 1882073306 end_log_pos 2842 CRC32 0x1e5a0847 Intvar
INSERT_IDを109/*!*/に設定します。
#170814 11:07:30 サーバー ID 1882073306 end_log_pos 2951 CRC32 0xebeb947c クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680050/*!*/ に設定します。
t2 (名前) 値に挿入 ('a300')
//*!*/;
# 788 で
#170814 11:07:34 サーバー ID 1882073306 end_log_pos 2982 CRC32 0x6436ad60 Xid = 32934
専念 /*!*/;

リレー ログの次の行に注意してください。

#700101 8:00:00 サーバー ID 1882073306 end_log_pos 0 CRC32 0x0b8a412f test-mysql-bin.000116 にローテーション pos: 2451

これは、リレー ログに、位置 2451 から始まるメイン データベース test-mysql-bin.000116 の情報が格納されていることを示します。

具体的な対応を見てみましょう。

メインライブラリのバイナリログは次のとおりです。

# 2560 で
#170814 11:07:18 サーバーID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
INSERT_IDを107/*!*/に設定します。
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 クエリ thread_id=92 exec_time=0 error_code=0
タイムスタンプを 1502680038/*!*/ に設定します。
t2 (名前) 値に挿入 ('a100')
//*!*/;
# 2669 で

対応するスレーブ ライブラリ relay-log には次の行があります。

# 397 で
#170814 11:07:18 サーバーID 1882073306 end_log_pos 2560 CRC32 0x7bdf274b Intvar
INSERT_IDを107/*!*/に設定します。
#170814 11:07:18 サーバー ID 1882073306 end_log_pos 2669 CRC32 0x68e441c8 クエリ thread_id=92 exec_time=0 error_code=0
`db1`/*!*/ を使用します。
タイムスタンプを 1502680038/*!*/ に設定します。
t2 (名前) 値に挿入 ('a100')
//*!*/;
# 506 で

また、show slave status\G の次の行の関係にも注意してください。

マスターログファイル: test-mysql-bin.000117
読み取りマスターログ位置: 774

上記の2行はメインライブラリに対するIOスレッドを表しています。

リレーログファイル: リレーログ.000038
リレーログ位置: 723

上記の2行は、スレーブライブラリに対するSQLスレッドを表します。

リレーマスターログファイル: test-mysql-bin.000117
実行マスターログポジション: 555

上記の2行は、メインライブラリに対するSQLスレッドを表しています。

Relay_Log_Pos: 723 と Exec_Master_Log_Pos: 555 に対応する SQL ステートメントは一貫しています。

要約する

以上が、MySQL マスターライブラリ binlog とスレーブライブラリ relay-log の関係についての詳細なコード解説に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。興味のある方は、MySQL の binlog_format モードと構成の詳細な分析、いくつかの重要な MySQL 変数、MySQL の準備原則の詳細な説明などを参照してください。質問がある場合は、いつでもメッセージを残すことができます。誰でもコミュニケーションと議論を歓迎します。

以下もご興味があるかもしれません:
  • mysql binlog (バイナリログ) を表示する方法
  • MySQL でデータ復旧に binlog を使用する方法
  • Mysql Binlogデータの表示方法の詳細な説明
  • MySQL の binlog_format モードと設定の詳細な分析
  • MySQLの誤操作後にbinlog2sqlを使用して素早くロールバックする方法の詳細な説明
  • mysql binlog ログを正しくクリーンアップする 2 つの方法
  • MySQL binlog を開く手順

<<:  JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

>>:  Nginx サーバーで Web クローラーをブロックおよび禁止する方法

推薦する

Dockerのネットワークモードと設定方法

1. Dockerネットワークモードdocker run が Docker コンテナを作成するときに...

MySQLデータベースとテーブルシャーディングの概要

プロジェクトの開発中に、データベースのデータがどんどん大きくなり、その結果、1 つのテーブルにデータ...

フレックスマルチカラムレイアウトで発生する問題と解決策の詳細な説明

フレックス レイアウトは間違いなくシンプルで使いやすいです。レイアウトをよりシンプルかつ高速にします...

Linux システム構成 (サービス制御) の詳細な紹介

目次序文1. システムサービス制御1. システムctl 2. ターゲット3. 共通システムサービス4...

Linux で履歴コマンドを表示および実行する方法

履歴コマンドを表示し、指定されたコマンドを実行します owen@owen:~/owen/softwa...

MySQL 8.0 に移行する際の注意点 (要約)

パスワードモードPDO::__construct(): サーバーがクライアントに不明な認証方法を要求...

JavaScriptのアンチシェイクとスロットリングとは

目次1. 関数デバウンス1. 画像安定化とは何ですか? 2. 関数のスロットリング2.1 タイマーの...

MySQL テーブルを削除する際の I/O エラーの原因分析と解決方法

問題現象最近、sysbench を使用して MySQL をテストしました。テストに長い時間がかかった...

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

Linux での MySQL マルチインスタンスの展開とインストール ガイド

MySQLマルチインスタンスとは簡単に言うと、MySQL マルチインスタンスとは、サーバー上で複数の...

docker に php-fpm サービス/拡張機能/構成をインストールする詳細なチュートリアル

macにbrewを使ってphp56をインストールしたところ、 opensslがバージョン1.1だった...

CentOS で yum を使用して rabbitmq-server をインストールする方法

RabbitMQをインストールする前にSocatをインストールする必要があります。そうしないと、Ra...

Linux インストール MySQL5.6.24 使用手順

Linux インストール MySQL ノート1. MySQL データベース サーバーをインストールす...

MySQLの挿入文字化け問題を解決する方法

問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...

ApacheとTomcatを組み合わせて静的状態と動的状態を分離する方法

実験環境ApacheとTomcatは両方ともIPアドレス192.168.153.136のホストにイン...