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 クローラーをブロックおよび禁止する方法

推薦する

Linux システムのパフォーマンスを分析するための top コマンドの詳細な説明

Linux topコマンドの紹介top コマンドは、Linux でよく使用されるパフォーマンス分析ツ...

Dockerコンテナでyumを呼び出すときのエラーの解決方法

dockerfile またはコンテナ内で yum を実行すると、エラーが報告され、ソースが見つかりま...

CCS におけるマージン: トップ崩壊問題を解決する

HTML 構造は次のとおりです。 CCS 構造は次のとおりです。 ページ効果図は次のとおりです。 こ...

Vueはシンプルな計算機を実装する

この記事では、参考までに、Vue の具体的なコードで簡単な計算機を実装する方法を紹介します。具体的な...

Linux ディスクデバイスと LVM 管理コマンドの詳細な例

序文Linux オペレーティング システムでは、デバイス ファイルは特別なタイプのファイルです。これ...

docker によってプルされたイメージがどこに保存されるかの詳細な説明

20200804追記:記事の内容に誤りがある可能性があります。他の回答を検索することもできます。 d...

MySQL sql_mode の使用に関する詳細な説明

目次序文sql_mode の説明最も重要なオプションすべてのオプション要約する序文前回の記事「MyS...

Mysql systemctl start mysqld によって報告されるエラーの解決策

エラーメッセージ:制御プロセスがエラー コードで終了したため、mysqld.service のジョブ...

DockerHubイメージリポジトリの使い方の詳しい説明

これまで使用していたイメージはすべて DockerHub パブリック リポジトリから取得していました...

JavaScript演算子の使用に関するヒントをいくつか共有します

目次1. オプションの連鎖演算子 [? .】 2. 論理的な空の代入 (?? =) 3. 論理和代入...

vue3 カスタムディレクティブの詳細

目次1. カスタム指示の登録1.1. グローバルカスタム指示1.2. ローカルカスタム指示2. カス...

MySQL 8.0.15 圧縮版インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15圧縮版のインストール方法を紹介します。具体的な内容は...

Vue のすべてのカプセル化方法の簡単な概要

目次1. カプセル化API 2. グローバルツールコンポーネントを登録する3. グローバル関数をカプ...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

Vue の vue.$set() メソッドのソースコード例の詳細な説明

Vue を使用してプロジェクトを開発する過程で、次のような問題によく遭遇します。Vue のデータでオ...