- 27.12.11.1 replication_connection_configuration テーブル
- 27.12.11.2 replication_connection_status テーブル
- 27.12.11.3 replication_asynchronous_connection_failover テーブル
- 27.12.11.4 replication_applier_configuration テーブル
- 27.12.11.5 replication_applier_status テーブル
- 27.12.11.6 replication_applier_status_by_coordinator テーブル
- 27.12.11.7 replication_applier_status_by_worker テーブル
- 27.12.11.8 replication_applier_global_filters テーブル
- 27.12.11.9 replication_applier_filters テーブル
- 27.12.11.10 replication_group_members テーブル
- 27.12.11.11 replication_group_member_stats テーブル
- 27.12.11.12 binary_log_transaction_compression_stats テーブル
パフォーマンススキーマは、レプリケーション情報を公開するテーブルを提供します。 これは、SHOW REPLICA | SLAVE STATUS
ステートメントから入手できる情報に似ていますが、テーブル形式での表現はアクセスしやすく、ユーザビリティ上の利点があります:
SHOW REPLICA | SLAVE STATUS
出力は、視覚的な検査に役立ちますが、プログラムでの使用にはあまり役立ちません。 対照的に、「パフォーマンススキーマ」テーブルを使用すると、複雑なWHERE
条件、結合など、一般的なSELECT
クエリーを使用してレプリカステータスに関する情報を検索できます。クエリー結果は、さらに分析するためにテーブルに保存することも、変数に割り当ててストアドプロシージャで使用することもできます。
レプリケーションテーブルは、より適切な診断情報を提供します。 マルチスレッドレプリカ操作の場合、
SHOW REPLICA | SLAVE STATUS
はLast_SQL_Errno
およびLast_SQL_Error
フィールドを使用してすべてのコーディネータおよびワーカースレッドエラーをレポートするため、最新のエラーのみが表示され、情報が失われる可能性があります。 レプリケーションテーブルには、情報を失わずにスレッドごとにエラーが格納されます。最後に表示されたトランザクションは、ワーカーごとにレプリケーションテーブルに表示されます。 これは、
SHOW REPLICA | SLAVE STATUS
からは入手できない情報です。パフォーマンススキーマインタフェースに精通している開発者は、テーブルに行を追加することによって、レプリケーションテーブルを拡張して追加情報を提供できます。
レプリケーションテーブルの説明
パフォーマンススキーマは、次のレプリケーション関連テーブルを提供します:
-
ソースへのレプリカの接続に関する情報を含むテーブル:
replication_connection_configuration
: ソースに接続するための構成パラメータreplication_connection_status
: ソースへの接続の現在のステータスreplication_asynchronous_connection_failover
: 非同期接続フェイルオーバーメカニズムのソースリスト
-
トランザクションアプライアンスに関する一般的な (スレッド固有ではない) 情報を含むテーブル:
replication_applier_configuration
: レプリカ上のトランザクションアプライアンスの構成パラメータ。replication_applier_status
: レプリカ上のトランザクションアプライアンスの現在のステータス。
-
ソースから受信したトランザクションの適用を担当する特定のスレッドに関する情報を含むテーブル:
replication_applier_status_by_coordinator
: コーディネータスレッドのステータス (レプリカがマルチスレッドでないかぎり空)。replication_applier_status_by_worker
: レプリカがマルチスレッドの場合のアプライヤスレッドまたはワーカースレッドのステータス。
-
チャネルベースのレプリケーションフィルタに関する情報を含むテーブル:
replication_applier_filters
: 特定のレプリケーションチャネルに構成されているレプリケーションフィルタに関する情報を提供します。replication_applier_global_filters
: すべてのレプリケーションチャネルに適用されるグローバルレプリケーションフィルタに関する情報を提供します。
-
グループレプリケーションメンバーに関する情報を含むテーブル:
replication_group_members
: グループメンバーのネットワークおよびステータス情報を提供します。replication_group_member_stats
: 参加しているグループメンバーおよびトランザクションに関する統計情報を提供します。
詳細は、セクション18.3「グループレプリケーションの監視」 を参照してください。
パフォーマンススキーマが無効になっている場合、次のパフォーマンススキーマレプリケーションテーブルは引き続き移入されます:
replication_connection_configuration
replication_connection_status
replication_asynchronous_connection_failover
replication_applier_configuration
replication_applier_status
replication_applier_status_by_coordinator
replication_applier_status_by_worker
例外は、レプリケーションテーブル replication_connection_status
、replication_applier_status_by_coordinator
および replication_applier_status_by_worker
のローカルタイミング情報 (トランザクションの開始タイムスタンプと終了タイムスタンプ) です。 パフォーマンススキーマが無効になっている場合、この情報は収集されません。
次の各セクションでは、SHOW REPLICA | SLAVE STATUS
によって生成されるカラムと、同じ情報が表示されるレプリケーションテーブルのカラムとの対応など、各レプリケーションテーブルについて詳しく説明します。
このレプリケーションテーブルの残りの部分では、パフォーマンススキーマがそれらをどのように移入するか、および SHOW REPLICA | SLAVE STATUS
のどのフィールドがテーブルに表示されないかについて説明します。
レプリケーションテーブルのライフサイクル
パフォーマンススキーマは、次のようにレプリケーションテーブルに移入します:
CHANGE REPLICATION SOURCE TO
|CHANGE MASTER TO
を実行する前は、テーブルは空です。CHANGE REPLICATION SOURCE TO
|CHANGE MASTER TO
の後、構成パラメータはテーブルに表示されます。 現時点では、アクティブなレプリケーションスレッドはないため、THREAD_ID
カラムはNULL
で、SERVICE_STATE
カラムの値はOFF
です。START REPLICA | SLAVE
の後、NULL
以外のTHREAD_ID
値が表示されます。 アイドル状態またはアクティブなスレッドのSERVICE_STATE
値はON
です。 ソースに接続するスレッドは、接続の確立中はCONNECTING
の値を持ち、接続が継続しているかぎりON
の値を持ちます。STOP REPLICA | SLAVE
の後、THREAD_ID
カラムはNULL
になり、存在しなくなったスレッドのSERVICE_STATE
カラムの値はOFF
になります。テーブルは、
STOP REPLICA | SLAVE
またはスレッドがエラーのために停止した後も保持されます。replication_applier_status_by_worker
テーブルは、レプリカがマルチスレッドモードで動作している場合にのみ空ではありません。 つまり、slave_parallel_workers
システム変数が 0 より大きい場合、このテーブルはSTART REPLICA | SLAVE
の実行時に移入され、行数にワーカー数が表示されます。
レプリケーションテーブルにないレプリカステータス情報
パフォーマンススキーマレプリケーションテーブル内の情報は、SHOW REPLICA | SLAVE STATUS
から使用可能な情報とは多少異なります。テーブルは、ファイル名や位置ではなくグローバルトランザクション識別子 (GTID) の使用に向けており、サーバー ID 値ではなくサーバー UUID 値を表しているためです。 これらの違いのため、いくつかの SHOW REPLICA | SLAVE STATUS
カラムはパフォーマンススキーマレプリケーションテーブルに保持されないか、別の方法で表されます:
-
次のフィールドはファイル名と位置を参照し、保持されません:
Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Exec_Master_Log_Pos Until_Condition Until_Log_File Until_Log_Pos
Master_Info_File
フィールドは保持されません。 これは、レプリカソースメタデータリポジトリに使用されるmaster.info
ファイルを参照します。これは、リポジトリにクラッシュセーフテーブルを使用することで置き換えられています。-
次のフィールドは、
server_uuid
ではなくserver_id
に基づいており、保持されません:Master_Server_Id Replicate_Ignore_Server_Ids
Skip_Counter
フィールドは GTID ではなくイベント数に基づいており、保持されません。-
これらのエラーフィールドは
Last_SQL_Errno
およびLast_SQL_Error
のエイリアスであるため、保持されません:Last_Errno Last_Error
パフォーマンススキーマでは、このエラー情報は
replication_applier_status_by_worker
テーブル (およびレプリカがマルチスレッドの場合はreplication_applier_status_by_coordinator
) のLAST_ERROR_NUMBER
およびLAST_ERROR_MESSAGE
カラムで使用できます。 これらのテーブルは、Last_Errno
およびLast_Error
から入手できるよりも具体的なスレッドエラーごとの情報を提供します。 -
コマンド行フィルタリングオプションに関する情報を提供するフィールドは保持されません:
Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table
Replica_IO_State
およびReplica_SQL_Running_State
のフィールドは保持されません。 必要に応じて、適切なレプリケーションテーブルのTHREAD_ID
カラムを使用し、INFORMATION_SCHEMA
PROCESSLIST
テーブルのID
カラムと結合して、プロセスリストからこれらの値を取得し、後者のテーブルのSTATE
カラムを選択できます。Executed_Gtid_Set
フィールドには、大量のテキストを含む大きなセットを表示できます。 代わりに、「パフォーマンススキーマ」テーブルには、レプリカによって現在適用されているトランザクションの GTID が表示されます。 または、実行された GTID のセットをgtid_executed
システム変数の値から取得できます。Seconds_Behind_Master
およびRelay_Log_Space
フィールドは指定予定のステータスであり、保持されません。
レプリケーションチャネル
レプリケーション「パフォーマンススキーマ」テーブルの最初のカラムは CHANNEL_NAME
です。 これにより、レプリケーションチャネルごとにテーブルを表示できます。 非マルチソースレプリケーション設定には、単一のデフォルトレプリケーションチャネルがあります。 レプリカで複数のレプリケーションチャネルを使用している場合は、レプリケーションチャネルごとにテーブルをフィルタして、特定のレプリケーションチャネルを監視できます。 詳細は、セクション17.2.2「レプリケーションチャネル」 および セクション17.1.5.8「マルチソースレプリケーションの監視」 を参照してください。