このページは機械翻訳したものです。
SHOW {REPLICA | SLAVE} STATUS [FOR CHANNEL channel]
このステートメントは、レプリカスレッドの必須パラメータに関するステータス情報を提供します。 MySQL 8.0.22 から、SHOW SLAVE STATUS のかわりに SHOW REPLICA STATUS を使用します。これは、そのリリースから非推奨になりました。 MySQL 8.0.22 より前のリリースでは、SHOW SLAVE STATUS を使用します。 このステートメントには、REPLICATION CLIENT 権限 (または非推奨の SUPER 権限) が必要です。
SHOW REPLICA | SLAVE STATUS は非ブロッキングです。 STOP REPLICA | SLAVE と同時に実行すると、SHOW REPLICA | SLAVE STATUS は、STOP REPLICA | SLAVE がレプリケーション SQL スレッドまたはレプリケーション I/O スレッド (あるいはその両方) の停止を完了するのを待たずに戻ります。 これにより、最新のデータが返されるようにするよりも、SHOW REPLICA | SLAVE STATUS から即時レスポンスを取得するモニタリングおよびその他のアプリケーションでの使用が重要になります。
mysql クライアントを使用してこのステートメントを発行する場合は、セミコロンの代わりに \G ステートメントターミネータを使用すると、より読みやすい縦のレイアウトが得られます。
mysql> SHOW REPLICA STATUS\G
*************************** 1. row ***************************
Replica_IO_State: Waiting for source to send event
Source_Host: localhost
Source_User: repl
Source_Port: 13000
Connect_Retry: 60
Source_Log_File: source-bin.000002
Read_Source_Log_Pos: 1307
Relay_Log_File: replica-relay-bin.000003
Relay_Log_Pos: 1508
Relay_Source_Log_File: source-bin.000002
Replica_IO_Running: Yes
Replica_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Source_Log_Pos: 1307
Relay_Log_Space: 1858
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Source_SSL_Allowed: No
Source_SSL_CA_File:
Source_SSL_CA_Path:
Source_SSL_Cert:
Source_SSL_Cipher:
Source_SSL_Key:
Seconds_Behind_Source: 0
Source_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Source_Server_Id: 1
Source_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562
Source_Info_File:
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Replica_SQL_Running_State: Reading event from the relay log
Source_Retry_Count: 10
Source_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Source_SSL_Crl:
Source_SSL_Crlpath:
Retrieved_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Executed_Gtid_Set: 3e11fa47-71ca-11e1-9e33-c80aa9429562:1-5
Auto_Position: 1
Replicate_Rewrite_DB:
Channel_name:
Source_TLS_Version: TLSv1.2
Source_public_key_path: public_key.pem
Get_source_public_key: 0
Network_Namespace:
パフォーマンススキーマは、レプリケーション情報を公開するテーブルを提供します。 これは、SHOW REPLICA | SLAVE STATUS ステートメントから使用できる情報に似ていますが、テーブル形式で表されます。 詳細は、セクション27.12.11「パフォーマンススキーマレプリケーションテーブル」を参照してください。
次のリストでは、SHOW REPLICA | SLAVE STATUS によって返されるフィールドについて説明します。 これらの意味の解釈の詳細は、セクション17.1.7.1「レプリケーションステータスの確認」を参照してください。
-
Replica_IO_Stateレプリカ I/O スレッドの
SHOW PROCESSLIST出力のStateフィールドのコピー。 これは、スレッドが何をしているかを示します: ソースへの接続、ソースからのイベントの待機、ソースへの再接続などを試行します。 可能性のある状態のリストについては、セクション8.14.5「レプリケーション I/O スレッドの状態」を参照してください。 -
Source_Hostレプリカが接続されているソースホスト。
-
Source_Userソースへの接続に使用されるアカウントのユーザー名。
-
Source_Portソースへの接続に使用されるポート。
-
Connect_Retry接続再試行の間の秒数 (デフォルトは 60)。 これは、
CHANGE REPLICATION SOURCE TOステートメント (MySQL 8.0.23 の場合) またはCHANGE MASTER TOステートメント (MySQL 8.0.23 の場合) で設定できます。 -
Source_Log_FileI/O スレッドが現在読み取っているソースバイナリログファイルの名前。
-
Read_Source_Log_PosI/O スレッドが読み取った現在のソースバイナリログファイル内の位置。
-
Relay_Log_FileSQL スレッドが現在読み取って実行している元のリレーログファイルの名前。
-
Relay_Log_Pos現在のリレーログファイル内の SQL スレッドが最後に読み取って実行した位置。
-
Relay_Source_Log_FileSQL スレッドによって実行された最新のイベントを含むソースバイナリログファイルの名前。
-
Replica_IO_Runningレプリケーション I/O スレッドが開始され、ソースに正常に接続されたかどうか。 内部的には、このスレッドの状態は次の 3 つの値のいずれかによって表されます。
MYSQL_REPLICA_NOT_RUN. レプリケーション I/O スレッドが実行されていません。 この状態では、
Replica_IO_RunningはNoです。MYSQL_REPLICA_RUN_NOT_CONNECT. レプリケーション I/O スレッドは実行中ですが、レプリケーションソースに接続されていません。 この状態では、
Replica_IO_RunningはConnectingです。MYSQL_REPLICA_RUN_CONNECT. レプリケーション I/O スレッドは実行中で、レプリケーションソースに接続されています。 この状態では、
Replica_IO_RunningはYesです。
-
Replica_SQL_Runningレプリケーション SQL スレッドが開始されているかどうか。
-
Replicate_Do_DB、Replicate_Ignore_DB--replicate-do-dbおよび--replicate-ignore-dbオプションまたはCHANGE REPLICATION FILTERステートメントで指定されたデータベースの名前。FOR CHANNEL句が使用された場合は、チャネル固有のレプリケーションフィルタが表示されます。 それ以外の場合は、すべてのレプリケーションチャネルのレプリケーションフィルタが表示されます。 -
Replicate_Do_Table、Replicate_Ignore_Table、Replicate_Wild_Do_Table、Replicate_Wild_Ignore_Table--replicate-do-table,--replicate-ignore-table,--replicate-wild-do-tableオプション、--replicate-wild-ignore-tableオプションまたはCHANGE REPLICATION FILTERステートメントで指定されたテーブルの名前。FOR CHANNEL句が使用された場合は、チャネル固有のレプリケーションフィルタが表示されます。 それ以外の場合は、すべてのレプリケーションチャネルのレプリケーションフィルタが表示されます。 -
Last_Errno、Last_Errorこれらのカラムは、
Last_SQL_ErrnoおよびLast_SQL_Errorのエイリアスです。RESET MASTERまたはRESET REPLICA | SLAVEを発行すると、これらのカラムに表示される値がリセットされます。注記レプリケーション SQL スレッドは、エラーを受信すると、最初にエラーを報告してから SQL スレッドを停止します。 これは、
Replica_SQL_RunningにYesが表示されている場合でも、SHOW REPLICA | SLAVE STATUSでLast_SQL_Errnoにゼロ以外の値が表示される短い期間があることを意味します。 -
Skip_Countersql_slave_skip_counterシステム変数の現在の値。 SET GLOBAL sql_slave_skip_counter Statementを参照してください。 -
Exec_Source_Log_Posレプリケーション SQL スレッドが読み取って実行した現在のソースバイナリログファイル内の位置で、次に処理されるトランザクションまたはイベントの開始をマークします。 この値は、新しいレプリカがこの時点から読み取るように、既存のレプリカから新しいレプリカを開始するときに、(MySQL 8.0.23 の)
CHANGE REPLICATION SOURCE TOステートメントのSOURCE_LOG_POSオプションまたは (MySQL 8.0.23 の前の)CHANGE MASTER TOステートメントのMASTER_LOG_POSオプションとともに使用できます。 ソースバイナリログ内の (Relay_Source_Log_File、Exec_Source_Log_Pos) によって指定された座標は、リレーログ内の (Relay_Log_File、Relay_Log_Pos) によって指定された座標に対応します。実行されたリレーログからのトランザクションの順序に一貫性がないと、この値が「「最低水位標」」になる可能性があります。 つまり、位置の前に表示されるトランザクションはコミットされていることが保証されますが、位置の後のトランザクションはコミットされているかどうかは保証されません。 これらのギャップを修正する必要がある場合は、
START REPLICA | SLAVE UNTIL SQL_AFTER_MTS_GAPSを使用します。 詳しくはセクション17.5.1.34「レプリケーションとトランザクションの非一貫性」をご覧ください。 -
Relay_Log_Space既存のすべてのリレーログファイルの合計サイズ。
-
Until_Condition、Until_Log_File、Until_Log_PosSTART REPLICA | SLAVEステートメントのUNTIL句で指定された値。Until_Conditionの値は次のとおりです。UNTIL句が指定されなかった場合はNoneレプリカがソースバイナリログ内の指定された位置まで読み取っている場合は
Source。レプリカがリレーログ内の指定された位置まで読み取っている場合は
Relay。gtid_setに GTID がリストされている最初のトランザクションに到達するまで、レプリケーション SQL スレッドがトランザクションを処理している場合はSQL_BEFORE_GTIDS。gtid_setの最後のトランザクションが両方のスレッドによって処理されるまで、レプリケーションスレッドがすべてのトランザクションを処理している場合はSQL_AFTER_GTIDS。マルチスレッドレプリカ SQL スレッドがリレーログにギャップがなくなるまで実行されている場合は
SQL_AFTER_MTS_GAPS。
Until_Log_FileおよびUntil_Log_Posは、レプリケーション SQL スレッドが実行を停止する座標を定義するログファイルの名前と位置を示します。UNTIL句の詳細は、セクション13.4.2.8「START SLAVE | REPLICA ステートメント」を参照してください。 -
Source_SSL_Allowed,Source_SSL_CA_File,Source_SSL_CA_Path,Source_SSL_Cert,Source_SSL_Cipher,Source_SSL_CRL_File,Source_SSL_CRL_Path,Source_SSL_Key,Source_SSL_Verify_Server_Certこれらのフィールドには、レプリカがソースに接続するために使用する SSL パラメータが表示されます (存在する場合)。
Source_SSL_Allowedには次の値があります:ソースへの SSL 接続が許可されている場合は
Yes。ソースへの SSL 接続が許可されていない場合は
No。SSL 接続が許可されているが、レプリカサーバーで SSL サポートが有効になっていない場合は
Ignored。
その他の SSL 関連フィールドの値は、
CHANGE REPLICATION SOURCE TOステートメント (MySQL 8.0.23 の場合) のSOURCE_SSL_*オプションまたはCHANGE MASTER TOステートメント (MySQL 8.0.23 の場合) のMASTER_SSL_*オプションの値に対応します。 セクション13.4.2.1「CHANGE MASTER TO ステートメント」を参照してください。 -
Seconds_Behind_Sourceこのフィールドは、レプリカがどのように 「late」 であるかを示します:
レプリカが更新をアクティブに処理している場合、このフィールドには、レプリカの現在のタイムスタンプと、レプリカで現在処理されているイベントのソースに記録されている元のタイムスタンプの差異が表示されます。
レプリカで現在処理されているイベントがない場合、この値は 0 です。
基本的に、このフィールドはレプリケーション SQL スレッドとレプリケーション I/O スレッドの間の時間差を秒単位で測定します。 ソースとレプリカ間のネットワーク接続が高速である場合、レプリケーション I/O スレッドはソースに非常に近いため、このフィールドはレプリケーション SQL スレッドがソースと比較される遅延の概算値になります。 ネットワークが低速の場合、これは適切な概算ではありません。レプリケーション SQL スレッドは、多くの場合、低速なレプリケーション I/O スレッドで捕捉される可能性があるため、レプリケーション I/O スレッドがソースと比較して遅延している場合でも、
Seconds_Behind_Sourceは多くの場合 0 の値を表示します。 つまり、このカラムは高速ネットワークの場合にのみ有効です。この時間差計算は、レプリカ I/O スレッドの起動時に計算された差がそれ以降も一定である場合に、ソースとレプリカのクロック時間が同一でない場合でも機能します。 NTP の更新を含むすべての変更により、
Seconds_Behind_Sourceの計算の信頼性が低下する可能性のあるクロックスキューが発生する可能性があります。MySQL 8.0 では、レプリケーション SQL スレッドが実行されていない場合、または SQL スレッドがすべてのリレーログを消費し、レプリケーション I/O スレッドが実行されていない場合、このフィールドは
NULL(未定義または不明) になります。 (旧バージョンの MySQL では、レプリケーション SQL スレッドまたはレプリケーション I/O スレッドが実行されていなかったか、ソースに接続されていなかった場合、このフィールドはNULLでした。) レプリケーション I/O スレッドは実行されているが、リレーログがいっぱいになった場合、Seconds_Behind_Sourceは 0 に設定されます。Seconds_Behind_Sourceの値は、イベントに格納されているタイムスタンプに基づき、レプリケーションによって保持されます。 つまり、ソース M1 自体が M0 のレプリカである場合、M0 バイナリログから発生した M1 バイナリログのすべてのイベントには、そのイベントの M0 タイムスタンプが設定されます。 これにより、MySQL はTIMESTAMPを正常にレプリケートできます。 ただし、Seconds_Behind_Sourceの問題は、M1 がクライアントから直接更新を受信した場合、M1 からの最後のイベントが M0 から発生し、場合によっては M1 での直接更新の結果であるため、Seconds_Behind_Source値がランダムに変動することです。マルチスレッドのレプリカを使用する場合、この値は
Exec_Source_Log_Posに基づいているため、最後にコミットされたトランザクションの位置が反映されない可能性があることに注意してください。 -
Last_IO_Errno、Last_IO_Errorレプリケーション I/O スレッドの停止の原因となった最新のエラーのエラー番号およびエラーメッセージ。 0 のエラー番号および空の文字列のメッセージは、「エラーなし」を示します。
Last_IO_Error値が空でない場合、エラー値はレプリカエラーログにも表示されます。I/O エラー情報には、最新の I/O スレッドエラーが発生した日時を示すタイムスタンプが含まれます。 このタイムスタンプは
YYMMDD hh:mm:ssの形式を使用し、Last_IO_Error_Timestampカラムに表示されます。RESET MASTERまたはRESET REPLICA | SLAVEを発行すると、これらのカラムに表示される値がリセットされます。 -
Last_SQL_Errno、Last_SQL_Errorレプリケーション SQL スレッドの停止の原因となった最新のエラーのエラー番号およびエラーメッセージ。 0 のエラー番号および空の文字列のメッセージは、「エラーなし」を示します。
Last_SQL_Error値が空でない場合、エラー値はレプリカエラーログにも表示されます。レプリカがマルチスレッド化されている場合、レプリケーション SQL スレッドはワーカースレッドのコーディネータです。 この場合、
Last_SQL_Errorフィールドには、パフォーマンススキーマreplication_applier_status_by_coordinatorテーブルのLast_Error_Messageカラムに表示される内容が正確に表示されます。 このフィールド値は、各ワーカースレッドステータスを示すreplication_applier_status_by_workerテーブルに表示される他のワーカースレッドでさらに障害が発生する可能性があることを示すように変更されます。 そのテーブルが使用できない場合は、レプリカエラーログを使用できます。 ログまたはreplication_applier_status_by_workerテーブルを使用して、SHOW REPLICA | SLAVE STATUSまたはコーディネータテーブルに表示される障害の詳細を確認する必要もあります。SQL エラー情報には、最新の SQL スレッドエラーが発生した日時を示すタイムスタンプが含まれます。 このタイムスタンプは
YYMMDD hh:mm:ssの形式を使用し、Last_SQL_Error_Timestampカラムに表示されます。RESET MASTERまたはRESET REPLICA | SLAVEを発行すると、これらのカラムに表示される値がリセットされます。MySQL 8.0 では、
Last_SQL_ErrnoおよびLast_SQL_Errorカラムに表示されるすべてのエラーコードおよびメッセージは、Server Error Message Reference にリストされているエラー値に対応しています。 これは、以前のバージョンでは常に当てはまるわけではありませんでした。 (Bug #11760365、Bug #52768) -
Replicate_Ignore_Server_Idsレプリカがこれらのサーバーからのイベントを無視するように、
CHANGE REPLICATION SOURCE TO|CHANGE MASTER TOステートメントのIGNORE_SERVER_IDSオプションを使用して指定されたサーバー ID。 このオプションは、いずれかのサーバーが削除されたときに循環またはその他のマルチソースレプリケーション設定で使用されます。 この方法でサーバー ID が設定されている場合は、1 つ以上の数値のカンマ区切りリストが表示されます。 サーバー ID が設定されていない場合、このフィールドは空白です。注記slave_master_infoテーブルのIgnored_server_ids値には、無視されるサーバー ID も空白区切りリストとして表示され、無視されるサーバー ID の合計数が先頭に付きます。 たとえば、サーバー ID が 2、6 または 9 のソースを無視するようレプリカに指示するために、IGNORE_SERVER_IDS = (2,6,9)オプションを含むCHANGE REPLICATION SOURCE TO|CHANGE MASTER TOステートメントが発行された場合、その情報は次のように表示されます:Replicate_Ignore_Server_Ids: 2, 6, 9Ignored_server_ids: 3, 2, 6, 9Replicate_Ignore_Server_Idsのフィルタリングは SQL スレッドではなく、I/O スレッドによって実行されます。つまり、フィルタで除外されるイベントはリレーログに書き込まれません。 これは、SQL スレッドに適用される--replicate-do-tableなどのサーバーオプションによって実行されるフィルタリングアクションとは異なります。注記MySQL 8.0 から、
IGNORE_SERVER_IDSで既存のサーバー ID が設定されているチャネルがある場合にSET GTID_MODE=ONが発行されると、非推奨の警告が発行されます。 GTID ベースのレプリケーションを開始する前に、SHOW REPLICA | SLAVE STATUSを使用して、関係するサーバー上の無視されたすべてのサーバー ID リストを確認してクリアします。 リストをクリアするには、空のリストでIGNORE_SERVER_IDSオプションを含むCHANGE REPLICATION SOURCE TO|CHANGE MASTER TOステートメントを発行します。 -
Source_Server_Idソースからの
server_id値。 -
Source_UUIDソースからの
server_uuid値。 -
Source_Info_Filemaster.infoファイルの場所。その使用は非推奨になりました。 デフォルトでは、MySQL 8.0 から、レプリカ接続メタデータリポジトリのかわりにテーブルが使用されます。 -
SQL_Delayレプリカがソースを遅らせる必要がある秒数。
-
SQL_Remaining_DelayReplica_SQL_Running_StateがWaiting until MASTER_DELAY seconds after source executed eventの場合、このフィールドには残りの遅延秒数が含まれます。 ほかのときは、このフィールドはNULLです。 -
Replica_SQL_Running_StateSQL スレッドの状態 (
Replica_IO_Stateに類似)。 この値は、SHOW PROCESSLISTで表示される SQL スレッドのState値と同じです。セクション8.14.6「レプリケーション SQL スレッドの状態」 には、考えられる状態のリストが表示されます。 -
Source_Retry_Count接続が失われた場合にレプリカがソースへの再接続を試行できる回数。 This value can be set using the
SOURCE_RETRY_COUNT|MASTER_RETRY_COUNToption of theCHANGE REPLICATION SOURCE TOstatement (from MySQL 8.0.23) orCHANGE MASTER TOstatement (before MySQL 8.0.23), or the older--master-retry-countserver option (still supported for backward compatibility). -
Source_Bindレプリカがバインドされているネットワークインタフェース (ある場合)。 これは、
CHANGE REPLICATION SOURCE TOステートメント (MySQL 8.0.23) またはCHANGE MASTER TOステートメント (MySQL 8.0.23 より前) のSOURCE_BIND|MASTER_BINDオプションを使用して設定します。 -
Last_IO_Error_Timestamp最新の I/O エラーがいつ発生したかを示す
YYMMDD hh:mm:ss形式のタイムスタンプ。 -
Last_SQL_Error_Timestamp最新の SQL エラーがいつ発生したかを示す
YYMMDD hh:mm:ss形式のタイムスタンプ。 -
Retrieved_Gtid_Setこのレプリカによって受信されたすべてのトランザクションに対応するグローバルトランザクション ID のセット。 GTID が使用されていない場合は空です。 詳しくはGTID セットをご覧ください。
これは、リレーログ内に存在するか、またはこれまでに存在したすべての GTID のセットです。 各 GTID は、
Gtid_log_eventが受信されるとすぐに追加されます。 そのため、このセットには、部分的に転送されたトランザクションの GTID も含まれる場合があります。RESET REPLICA | SLAVEまたはCHANGE REPLICATION SOURCE TO|CHANGE MASTER TOの実行、あるいは--relay-log-recoveryオプションの影響が原因ですべてのリレーログが失われると、そのセットはクリアされます。relay_log_purge = 1のときは、最新のリレーログが常に保持されるため、このセットはクリアされません。 -
Executed_Gtid_Setバイナリログに書き込まれたグローバルトランザクション ID のセット。 これは、このサーバー上のグローバル
gtid_executedシステム変数の値、およびこのサーバー上のSHOW MASTER STATUSの出力におけるExecuted_Gtid_Setの値と同じです。 GTID が使用されていない場合は空です。 詳しくはGTID セットをご覧ください。 -
Auto_PositionGTID 自動位置決めがチャネルに使用されている場合は 1、それ以外の場合は 0。
-
Replicate_Rewrite_DBReplicate_Rewrite_DB値には、指定されたレプリケーションフィルタリングルールが表示されます。 たとえば、次のレプリケーションフィルタルールが設定されているとします:CHANGE REPLICATION FILTER REPLICATE_REWRITE_DB=((db1,db2), (db3,db4));Replicate_Rewrite_DB値は次のように表示されます:Replicate_Rewrite_DB: (db1,db2),(db3,db4)詳細は、セクション13.4.2.2「CHANGE REPLICATION FILTER ステートメント」を参照してください。
-
Channel_name表示されるレプリケーションチャネル。 常にデフォルトのレプリケーションチャネルがあり、さらにレプリケーションチャネルを追加できます。 詳しくはセクション17.2.2「レプリケーションチャネル」をご覧ください。
-
Master_TLS_Versionソースで使用される TLS バージョン。 TLS バージョン情報については、セクション6.3.2「暗号化された接続 TLS プロトコルおよび暗号」 を参照してください。
-
Source_public_key_pathRSA キーペアベースのパスワード交換のソースに必要な公開キーのレプリカ側コピーを含むファイルへのパス名。 ファイルは PEM 形式である必要があります。 このカラムは、
sha256_passwordまたはcaching_sha2_password認証プラグインで認証されるレプリカに適用されます。Source_public_key_pathが指定され、有効な公開キーファイルが指定されている場合は、Get_source_public_keyよりも優先されます。 -
Get_source_public_keyRSA キーペアベースのパスワード交換に必要な公開キーをソースからリクエストするかどうか。 このカラムは、
caching_sha2_password認証プラグインで認証されるレプリカに適用されます。 そのプラグインの場合、ソースは要求されないかぎり公開鍵を送信しません。Source_public_key_pathが指定され、有効な公開キーファイルが指定されている場合は、Get_source_public_keyよりも優先されます。 -
Network_Namespaceネットワークネームスペース名。接続でデフォルト (グローバル) ネームスペースを使用する場合は空です。 ネットワークネームスペースの詳細は、セクション5.1.14「ネットワークネームスペースのサポート」 を参照してください。 このカラムは、MySQL 8.0.22 で追加されました。