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 アプリケーションを展開する方法 (画像とテキスト付き)

推薦する

Dockerの急速な拡張の高度な方法

1. コマンド方式作成された Swarm クラスターで nginx サービスを実行し、--repli...

MySQL 8.0.13 で日付を 0000-00-00 00:00:00 に設定すると発生する問題を解決する

データベース操作を学び始めたばかりです。今日、データを保存していたところ、エラーが発生していることに...

アニメーション効果のようなVueトランジションの例

目次結果を一目で見るハート効果デジタルスクロールアニメーションアニメーションのように結果を一目で見る...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

MySQLからOracleへのリアルタイム同期ソリューションの詳細な説明

1 要件の概要MySQL5.6本番データベースの複数のテーブルのデータは、Oracle11gデータウ...

MySQLクエリ速度を最適化する方法

前の章では、高性能な MySQL に不可欠な、最適化されたデータ型の選択方法とインデックスの効率的な...

Vue+webrtc (Tencent Cloud) ライブブロードキャスト機能の実装実践

目次1. 生放送効果2. ライブストリーミングを開始する手順2.1 Tencent Web(高速ライ...

Windows Server 2016 AD サーバーをセットアップする手順 (画像とテキスト)

導入: AD は Active Directory の略称で、中国語では Active Direct...

DockerはGitを使用してJenkinsのリリースとテストプロジェクトの詳細なプロセスを実装します

目次1. Dockerをインストールする2. カスタムネットワークアドレスを作成する3. Docke...

MySQL シリーズ 6 のユーザーと認証

目次チュートリアルシリーズ1. ユーザー管理1. ユーザーアカウント2. アカウントの追加と削除3....

APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

目次主に使用されるPostmanの機能データの暗号化と復号化さまざまなパラメータ設定実際に送信された...

MySQLの一般的なバックアップコマンドとシェルバックアップスクリプトの共有

複数のデータベースをバックアップするには、次のコマンドを使用できます。 mysqldump -uro...

Vueはシンプルなタイマーコンポーネントを実装します

プロジェクトを実行すると、リアルタイム更新、広告アニメーションの連続表示などの要件に遭遇することは避...

Docker での環境変数の使用とよくある問題の解決策

序文Docker はコンテナの環境変数を設定できます。設定方法は 2 つあります。イメージを作成する...

MySQL のグループ分けの例

mysql のような php switch case ステートメント。 xxフィールドを選択、ケース...