MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  パフォーマンススキーマレプリケーションテーブル

27.12.11 パフォーマンススキーマレプリケーションテーブル

パフォーマンススキーマは、レプリケーション情報を公開するテーブルを提供します。 これは、SHOW REPLICA | SLAVE STATUS ステートメントから入手できる情報に似ていますが、テーブル形式での表現はアクセスしやすく、ユーザビリティ上の利点があります:

  • SHOW REPLICA | SLAVE STATUS 出力は、視覚的な検査に役立ちますが、プログラムでの使用にはあまり役立ちません。 対照的に、「パフォーマンススキーマ」テーブルを使用すると、複雑な WHERE 条件、結合など、一般的な SELECT クエリーを使用してレプリカステータスに関する情報を検索できます。

  • クエリー結果は、さらに分析するためにテーブルに保存することも、変数に割り当ててストアドプロシージャで使用することもできます。

  • レプリケーションテーブルは、より適切な診断情報を提供します。 マルチスレッドレプリカ操作の場合、SHOW REPLICA | SLAVE STATUSLast_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_statusreplication_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「マルチソースレプリケーションの監視」 を参照してください。


関連キーワード:  テーブル, replication, パフォーマンス, スキーマ, applier, 情報, status, connection, events, REPLICA