MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
パフォーマンススキーマは、レプリケーション情報を公開するテーブルを提供します。 これは、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「マルチソースレプリケーションの監視」 を参照してください。