MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解

MySQL マスタースレーブレプリケーションスレッドの状態遷移に関する詳細な理解

序文

MySQL マスター スレーブ レプリケーションの基本原理は、スレーブ データベースがマスター データベースに接続し、マスター データベースがマスター データベースの DUMP スレッドを生成することです。DUMP スレッドの主なタスクは、バイナリ ログのマイニングを継続し、それをスレーブ データベースの IO スレッドに送信することです。ログ ストリームを受け取った後、IO スレッドはそれをリレー ログに書き込みます。別のスレッドである SQL スレッドは、リレー ログの内容を読み取り、SQL ステートメントを再生します。

この記事では、主にMySQLマスタースレーブレプリケーションスレッドの状態遷移に関する関連コンテンツを紹介します。詳しい紹介を見てみましょう。

1. メインライブラリスレッドの状態値

次のリストは、マスター スレーブ レプリケーション (SHOW PROCESSLIST) のマスター サーバーの Binlog Dump スレッドの State 列に表示される可能性のある最も一般的なステータスを示しています。マスター サーバーに Binlog Dump スレッドが表示されない場合は、レプリケーションが実行されていない、つまり現在スレーブ ホストが接続されていないことを意味します。

バイナリログイベントをスレーブに送信

バイナリ ログはさまざまなイベントで構成されます。イベントは通常、更新とその他の情報から構成されます。スレッドはバイナリ ログからイベントを読み取り、それをスレーブに送信しています。

1 つのバイナリログの読み取りが終了しました。次のバイナリログに切り替えます。

スレッドはバイナリ ログ ファイルの読み取りを完了し、スレーブ サーバーに送信する次のログ ファイルを開いています。

すべてのバイナリログをスレーブに送信しました。バイナリログが更新されるのを待機しています。

スレッドはバイナリ ログからすべての主要な更新を読み取り、スレーブ サーバーに送信しました。スレッドは現在アイドル状態であり、マスター上の新しい更新の結果としてバイナリ ログに新しいイベントが表示されるのを待機しています。

終了の完了を待機中

スレッドが停止したときに発生する非常に単純な状態。

2. スレーブI/Oスレッド状態値

マスターに接続中

スレッドはプライマリ サーバーに接続しようとしています。

マスターバージョンの確認

プライマリ サーバーとの接続が確立された直後に発生する一時的な状態。

マスターにスレーブを登録する

プライマリ サーバーとの接続が確立された直後に発生する一時的な状態。

バイナリログダンプを要求しています

プライマリ サーバーとの接続が確立された直後に発生する一時的な状態。スレッドは、要求されたバイナリ ログ ファイル名と位置から始まるバイナリ ログの内容の要求をマスター サーバーに送信します。

バイナリログダンプ要求が失敗した後、再接続を待機しています

バイナリ ログ ダンプ要求が失敗した場合 (接続なしのため)、スレッドはスリープ状態になり、定期的に再接続を試みます。再試行の間隔は、--master-connect-retry オプションを使用して指定できます。

バイナリログダンプ要求が失敗した後の再接続

スレッドはプライマリ サーバーに再接続しようとしています。

マスターがイベントを送信するのを待っています

スレッドはプライマリ サーバーに接続し、バイナリ ログ イベントが到着するのを待機しています。プライマリ サーバーがアイドル状態の場合は、さらに長く続く可能性があります。待機が slave_read_timeout 秒続くと、タイムアウトが発生します。この時点で、スレッドは接続が切断されたと見なし、再接続を試みます。

マスターイベントをリレーログにキューイングする

スレッドはイベントを読み取り、SQL スレッドによる処理のためにそれをリレー ログにコピーしています。

マスターイベントの読み取りに失敗した後、再接続を待機しています

読み取り中にエラーが発生した場合 (接続なしのため)、スレッドは再接続を試行する前に master-connect-retry 秒間スリープします。

マスターイベントの読み取りに失敗した後の再接続

スレッドはマスター サーバーに再接続しようとしています。接続が再確立されると、状態は「マスターがイベントを送信するのを待機中」に変わります。

スレーブSQLスレッドが十分なリレーログスペースを解放するのを待機しています

ゼロ以外の relay_log_space_limit 値が使用されており、リレー ログが大きくなり、それらの合計サイズがその値を超えています。 I/O スレッドは、SQL スレッドがリレー ログの内容を処理し、十分なスペースを解放するためにいくつかのリレー ログ ファイルを削除するまで待機しています。

終了時にスレーブミューテックスを待機中

スレッドが停止したときに発生する非常に単純な状態。

3. スレーブSQLスレッドの状態値

リレーログからイベントを読み取り中

スレッドはリレー ログからイベントを読み取り、イベントを処理できます。

すべてのリレーログを読み取りました。スレーブI/Oスレッドがそれを更新するのを待機しています。

スレッドはリレー ログ ファイル内のすべてのイベントを処理し、I/O スレッドがリレー ログに新しいイベントを書き込むのを待機しています。

終了時にスレーブミューテックスを待機中

スレッドが停止したときに発生する非常に単純な状態。

4. スレーブ接続スレッドの状態値

これらのスレッド状態はレプリケーション スレーブで発生しますが、I/O スレッドや SQL スレッドではなく、接続スレッドに関連付けられています。

マスターの変更

スレッドは CHANGE MASTER TO ステートメントを処理しています。

奴隷の殺害

スレッドは STOP SLAVE ステートメントを処理しています。

マスターダンプテーブルを開く

この状態は、マスター ダンプからテーブルを作成した後に発生します。

マスターダンプテーブルデータの読み取り

この状態は、マスター ダンプ テーブルを開いた後に発生します。

マスターダンプテーブルのインデックスを再構築する

この状態は、マスター ダンプ テーブル データの読み取り後に発生します。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL マスタースレーブレプリケーションの遅延の原因と解決策
  • MySQL マスタースレーブレプリケーション構成プロセス
  • MySQL マスタースレーブレプリケーションの原理からインストールと設定までを包括的に解説します。
  • MySQL マスタースレーブレプリケーションの原理と実践の詳細な説明
  • MySQL のマスタースレーブレプリケーションと読み取り書き込み分離の原理と使用法の詳細な説明
  • MYSQL マスタースレーブ レプリケーションの知識ポイントの概要
  • MySQL マスタースレーブレプリケーションの役割と動作原理の詳細な説明
  • MYSQL フルバックアップ、マスタースレーブレプリケーション、カスケードレプリケーション、および半同期の概要
  • MySQL マスタースレーブレプリケーションでエラーをスキップする方法

<<:  JS関数のカリー化の詳細な説明

>>:  自作の Windows サーバーに egg アプリケーションを展開する方法 (画像とテキスト付き)

推薦する

uniappがインターフェースドメイン名を動的に取得する方法を分析する

背景インターフェイス ドメイン名はハードコードされておらず、動的に取得されます。具体的な実装は、静的...

Vueは不規則なスクリーンショットを実装する

目次SVG による画像キャプチャCSS部分エフェクト画像表示ソースコードアドレスこれまで見てきたもの...

負荷分散と動的・静的分離を実現するNginx+Tomcatの原理の分析

1. Nginx ロードバランシングの実装原理1. Nginxはリバースプロキシを通じて負荷分散を実...

HTML Web ページ リスト タグ学習チュートリアル

HTML Web ページ リスト タグの学習チュートリアル。 HTML ページでは、リストはアウトラ...

Vite2.0の落とし穴

目次Viteプロジェクトビルドの最適化他のやっとこれは前回の記事の補足です。設定プロジェクトで遭遇し...

CSSを使用してファイルアップロードパターンを描画する

以下に示すように、あなたならどのようにそれを達成しますか: 通常、フォントアイコンを使用して中央にプ...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

Linux の操作とメンテナンスの基本システムディスク管理チュートリアル

1. ディスクパーティション: 2. fdiskパーティションディスクが2 TB未満の場合はfdis...

MySQL の日付と時刻の加算と減算のサンプル コード

目次1.MySQLは時間間隔を加算または減算します2. 日付を減算する最近、MySQL を見直してい...

国内SNSのホームページを比較・分析して得た経験をみんなで共有(写真)

この記事では、ソーシャル ウェブサイトのホームページを比較分析することで洞察を得て、ソーシャル ウェ...

Windows 10 システムで Mysql8.0.13 のルート パスワードを忘れる方法

1. まずmysqlサービスを停止します管理者としてCMDを開いて閉じるか、Windowsサービスペ...

Linuxにおけるselinuxの基本設定チュートリアルの詳細な説明

selinux ( Security-Enhanced Linux)は、Linux カーネル モジュ...

JavaScript タイピングゲーム

この記事では、タイピングゲームを実装するためのJavaScriptの具体的なコードを参考までに紹介し...

Vue3 Vue イベント処理ガイド

目次1. 基本的なイベント処理2. 親コンポーネントにカスタムイベントを送信するマウス修飾子4. キ...

HTMLは正規表現を使用してテーブルの例をテストします

以下は、HTML で正規表現を使用してテーブルをチェックするサンプル コードです。具体的なコードの内...