MySQL監視グループレプリケーションについて簡単に説明します

MySQL監視グループレプリケーションについて簡単に説明します

元のテキスト: https://dev.mysql.com/doc/refman/8.0/en/group-replication-monitoring.html
翻訳者:くん
現在、MySQL 8.0 の公式ドキュメントを翻訳中です。この記事はセクション 18.3「グループ レプリケーションの監視」です。

1. グループレプリケーションの監視

MySQL がパフォーマンス スキーマを有効にしてコンパイルされていると仮定すると、パフォーマンス スキーマ テーブルを使用してグループ レプリケーションを監視します。グループ レプリケーションでは次のテーブルが追加されます。

  • performance_schema.replication_group_member_stats
  • performance_schema.replication_group_members

これらの既存のパフォーマンス スキーマ レプリケーション テーブルには、グループ レプリケーションに関する情報も表示されます。

  • performance_schema.replication_connection_statusは、グループから受信され、アプライヤ キュー (リレー ログ) にキューイングされたトランザクションなど、グループ レプリケーションに関する情報が表示されます。
  • performance_schema.replication_applier_status 、グループ レプリケーションに関連するチャネルとスレッドのステータスを示します。トランザクションを適用するさまざまなワーカー スレッドが多数ある場合は、このテーブルを使用して、各ワーカー スレッドの動作を監視することもできます。

グループ レプリケーション プラグインによって作成されるレプリケーション チャネルの名前は次のとおりです。

  • group_replication_recovery - このチャネルは、分散リカバリ フェーズに関連するレプリケーションの変更に使用されます。
  • group_replication_applier - このチャネルは、グループからの受信変更に使用されます。グループからのトランザクションが直接適用されるチャネル。

次のセクションでは、各テーブルで利用できる情報について説明します。

2. グループメンバーインスタンスのステータス

グループ内のサーバー インスタンスはさまざまな状態になることができます。サーバーが正常に通信している場合、すべてのサーバーが同じステータスを報告します。ただし、ネットワーク パーティションがある場合、またはグループ メンバーがグループを離れた場合は、クエリの対象となるサーバーに応じて異なる情報が報告されることがあります。グループ メンバーがグループを脱退した場合、他のサーバーのステータスに関する最新情報を報告できなくなることに注意してください。ネットワークパーティションが発生した場合、調停数を超える数のサーバーが切断されると、サーバー同士が連携できなくなります。したがって、異なるサーバー メンバーのステータスを知ることはできません。したがって、サーバーの状態を推測するのではなく、一部のサーバーにアクセスできないことを報告します。

サーバーの状態

分野説明するグループ同期
オンラインメンバーは完全な機能を持つグループ メンバーとして動作できるため、クライアントは接続してトランザクションの実行を開始できます。はい
回復メンバーはグループの有効なメンバーになりつつあり、データ ソース ノード (データ ソース ノード) からステータス情報を受信して​​回復中です。いいえ
オフラインプラグインは読み込まれていますが、メンバーはどのグループにも属していません。いいえ
エラーローカル メンバーのステータス。 回復フェーズ中または変更を適用するときにエラーが発生すると、サーバーはこの状態になります。いいえ
到達不能ローカル障害検出器が、特定のサーバーがクラッシュしたか、誤って切断されたためにサーバーに到達できない可能性があると疑う場合は、サーバーのステータスが「UNREACHABLE」と表示されます。いいえ

重要
インスタンスが ERROR 状態になると、super_read_only オプションが ON に設定されます。 ERROR状態を終了するには、インスタンスを手動でsuper_read_only=OFFに設定する必要があります。

グループ レプリケーションは同期レプリケーションではありませんが、最終的には同期されることに注意してください。より正確には、トランザクションはすべてのグループ メンバーに同じ順序で配信されますが、実行は非同期です。つまり、コミットするトランザクションを受け入れた後、各メンバーは独自のペースでコミットします。

3. replication_group_members テーブル

performance_schema.replication_group_membersテーブルは、グループのメンバーであるさまざまなサーバー インスタンスのステータスを監視するために使用されます。テーブル replication_group_members は、グループの構成が動的に変更されるなど、ビューが変更されるたびに更新されます。これに基づいて、サーバー メンバーはメタデータの一部を交換して同期を維持し、コラボレーションを継続します。情報はグループ レプリケーション メンバー間で共有されるため、すべてのグループ メンバーに関する情報を任意のメンバーから照会できます。このテーブルを使用すると、たとえば次のコマンドを発行して、レプリケーション グループの状態の概要を取得できます。

from performance_group_members; -------------------------------------------------------+| _ replication | 3306 |

この結果から、グループは 3 つのメンバー、各メンバーのホストとポート番号 (クライアントがメンバーに接続するために使用する)、およびメンバーのserver_uuid構成されていることがわかります。 MEMBER_STATE列には、グループ メンバー インスタンスの状態の 1 つが表示されます。この場合は、グループの 3 つのメンバーすべてがONLINEあることが表示され、 MEMBER_ROLE列には、スレーブが 2 つとマスターが 1 つあることが示されます。したがって、グループはシングルプライマリモードで実行されている必要があります。 MEMBER_VERSION列は、グループをアップグレードしていて、グループ内のメンバーが異なるバージョンの MySQL を実行している場合に役立ちます。

4. レプリケーショングループメンバー統計

レプリケーション グループ内の各メンバーは、グループによってコミットされたトランザクションを検証して適用します。検証とアプリケーションに関する統計は、アプリケーション キューがどのように増加しているか、いくつの競合がトリガーされているか、いくつのトランザクションがチェックされているか、どのトランザクションがすべてのメンバーによってコミットされているかなどを把握するのに非常に役立ちます。

performance_schema.replication_group_member_statsテーブルは、認証プロセスに関連するグループ レベルの情報と、レプリケーション グループの各メンバーによって受信および開始されたトランザクションの統計を提供します。情報はグループ メンバー インスタンス間で共有されるため、すべてのグループ メンバーに関する情報を任意のメンバーから照会できます。リモート メンバーの統計の更新は、 group_replication_flow_control_periodオプションで指定されたメッセージ期間によって制御されるため、クエリを実行するメンバーのローカルに収集された統計とは若干異なる場合があることに注意してください。

テーブル replication_group_member_stats

分野説明する
チャンネル名グループレプリケーション チャネルの名前。
ビューIDこのグループの現在のビュー識別子。
メンバーIDこの値は、現在接続しているサーバー メンバーの UUID です。グループの各メンバーはそれぞれ異なる価値を持っています。メンバーそれぞれに固有のものなので、キーワードにもなります。
キュー内のトランザクション数競合検出のチェックを待機しているキュー内のトランザクションの数。競合チェックに合格すると、アプリケーションのためにキューに入れられます。
チェックされたトランザクション数競合がチェックされたトランザクションの数を示します。
検出された競合の数競合検出チェックに失敗したトランザクションの数を表します。
トランザクション行の検証をカウントする競合検出データベース (各トランザクションが検証されるデータベース) の現在のサイズを示します。
すべてのメンバーがコミットしたトランザクション現在のビューのすべてのメンバーに対して正常にコミットされたトランザクションを示します。 この値は定期的に更新されます。
最後の競合のないトランザクション競合がないことがチェックされた最後のトランザクション識別子を表示します。
リモートアプリケータキュー内のトランザクション数このメンバーがレプリケーション グループから受信し、適用を待機しているトランザクションの数。
リモート適用トランザクション数このメンバーがレプリケーション グループから受信し、適用されたトランザクションの数。
ローカル提案トランザクション数このメンバーによって生成され、調整のためにレプリケーション グループに送信されたトランザクションの数。
ローカルロールバックトランザクション数このメンバーによって開始され、レプリケーション グループに送信された後にロールバックされたトランザクションの数。

これらのフィールドは、グループ内のメンバーのパフォーマンスを監視するために重要です。たとえば、グループのメンバーの 1 人が遅延を経験しており、グループの他のメンバーと同期できないとします。この場合、キュー内に多数のトランザクションが表示されることがあります。この情報に基づいて、グループからメンバーを削除するか、グループ内の他のメンバーのトランザクション処理を遅らせるかを決定することで、キューに入れられるトランザクションの数を減らすことができます。この情報は、グループ レプリケーション プラグインのフロー制御を調整する方法を決定する際にも役立ちます。

上記は、MySQL 監視グループ レプリケーションの詳細についての簡単な説明です。MySQL 監視グループ レプリケーションの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • MySQL監視ツールmysql-monitorの詳細な説明
  • MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明
  • Grafana+Prometheus を使用して MySQL サービスのパフォーマンスを監視する
  • Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル
  • MySQL インデックス使用状況監視スキル (収集する価値あり!)
  • MySQLステートメントを監視する方法の詳細な説明
  • Zabbix が MySQL のマスター/スレーブ状態を監視する方法の詳細な説明
  • MySQL データベース監視ソフトウェア lepus の使用上の問題と解決策
  • PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明
  • MySQLリアルタイム監視ツールorztopの使い方の紹介
  • 実際のシミュレーション監視MySQLサービスシェルスクリプトの概要
  • MySQLを監視するためのZabbixのインストールと設定に関する基本的なチュートリアル

<<:  JQueryはアニメーション効果の非表示と表示を実装します

>>:  Dockerはターミナルで中国語を入力できない問題を解決します

推薦する

Linux での VMWare15.5 のインストールに関するチュートリアル

Linux に VMWare をインストールするには、公式 Web サイト https://www....

CSSのborder-radiusプロパティを使用して円弧を設定します

現象: divを一定の振幅で円、楕円などに変更する方法: CSSのborder-radiusプロパテ...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

MySQL が自動的に再起動する問題の解決方法

序文最近、テスト環境で MySQL データベースが自動的に再起動し続ける問題が発生しました。原因は、...

Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

背景同社のサーバーはすべて Alibaba Cloud ECS ホストを購入しています。デフォルトの...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

Vue-Element-Adminはログインジャンプを実現するために独自のインターフェースを統合しています

1. まずリクエスト設定ファイルを見て、axios.createメソッドを見てください。baseUR...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...

CSS で 3 列レイアウトを実装するいくつかの方法と利点と欠点

序文3 列レイアウトは、その名前が示すように、両側が固定され、中央が適応します。実際の開発では、3 ...

JS を使用して要素がビューポート内にあるかどうかを確認する方法

序文要素がビューポート内にあるかどうかを監視する2つの方法を共有する1. 位置計算Element.g...

CSS3 シンプルカットカルーセル画像実装コード

実装のアイデアまず、親コンテナーを作成し、2 つの順序なしリストを使用して、柔軟なレイアウトで親コン...

webkit-box-reflect を巧みに使用してさまざまな動的効果を実現する (要約)

かなり前の記事で、 -webkit-box-reflectプロパティについて説明しました。リフレクシ...

Vue3 ドラッグ可能な左パネルと右パネルの分割コンポーネントの実装

目次コンポーネントの分解左パネル右パネル入力パラメータの分解小道具スロット具体的な実装ドラッグする方...

Vueは2つのルーティング許可制御メソッドを実装しています

目次方法 1: ルーティング メタ情報 (meta)方法 2: ルーティング テーブルを動的に生成す...

SASSで変数のデフォルト値を使用する方法

SASS で定義された変数では、後で設定された値によって古い値が上書きされます。 $色: 赤; $色...