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_File
I/O スレッドが現在読み取っているソースバイナリログファイルの名前。
-
Read_Source_Log_Pos
I/O スレッドが読み取った現在のソースバイナリログファイル内の位置。
-
Relay_Log_File
SQL スレッドが現在読み取って実行している元のリレーログファイルの名前。
-
Relay_Log_Pos
現在のリレーログファイル内の SQL スレッドが最後に読み取って実行した位置。
-
Relay_Source_Log_File
SQL スレッドによって実行された最新のイベントを含むソースバイナリログファイルの名前。
-
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_Counter
sql_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_Pos
START 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, 9
Ignored_server_ids: 3, 2, 6, 9
Replicate_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_File
master.info
ファイルの場所。その使用は非推奨になりました。 デフォルトでは、MySQL 8.0 から、レプリカ接続メタデータリポジトリのかわりにテーブルが使用されます。 -
SQL_Delay
レプリカがソースを遅らせる必要がある秒数。
-
SQL_Remaining_Delay
Replica_SQL_Running_State
がWaiting until MASTER_DELAY seconds after source executed event
の場合、このフィールドには残りの遅延秒数が含まれます。 ほかのときは、このフィールドはNULL
です。 -
Replica_SQL_Running_State
SQL スレッドの状態 (
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_COUNT
option of theCHANGE REPLICATION SOURCE TO
statement (from MySQL 8.0.23) orCHANGE MASTER TO
statement (before MySQL 8.0.23), or the older--master-retry-count
server 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_Position
GTID 自動位置決めがチャネルに使用されている場合は 1、それ以外の場合は 0。
-
Replicate_Rewrite_DB
Replicate_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_path
RSA キーペアベースのパスワード交換のソースに必要な公開キーのレプリカ側コピーを含むファイルへのパス名。 ファイルは PEM 形式である必要があります。 このカラムは、
sha256_password
またはcaching_sha2_password
認証プラグインで認証されるレプリカに適用されます。Source_public_key_path
が指定され、有効な公開キーファイルが指定されている場合は、Get_source_public_key
よりも優先されます。 -
Get_source_public_key
RSA キーペアベースのパスワード交換に必要な公開キーをソースからリクエストするかどうか。 このカラムは、
caching_sha2_password
認証プラグインで認証されるレプリカに適用されます。 そのプラグインの場合、ソースは要求されないかぎり公開鍵を送信しません。Source_public_key_path
が指定され、有効な公開キーファイルが指定されている場合は、Get_source_public_key
よりも優先されます。 -
Network_Namespace
ネットワークネームスペース名。接続でデフォルト (グローバル) ネームスペースを使用する場合は空です。 ネットワークネームスペースの詳細は、セクション5.1.14「ネットワークネームスペースのサポート」 を参照してください。 このカラムは、MySQL 8.0.22 で追加されました。