Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.7.5.35 SHOW SLAVE STATUS 構文

SHOW SLAVE STATUS

このステートメントは、スレーブスレッドの基本的なパラメータに関するステータス情報を提供します。これには、SUPER または REPLICATION CLIENT 権限のどちらかが必要です。

mysql クライアントを使用してこのステートメントを発行する場合は、セミコロンの代わりに \G ステートメントターミネータを使用すると、より読みやすい縦のレイアウトが得られます。

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: localhost
                  Master_User: root
                  Master_Port: 13000
                Connect_Retry: 60
              Master_Log_File: master-bin.000002
          Read_Master_Log_Pos: 1307
               Relay_Log_File: slave-relay-bin.000003
                Relay_Log_Pos: 1508
        Relay_Master_Log_File: master-bin.000002
             Slave_IO_Running: Yes
            Slave_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_Master_Log_Pos: 1307
              Relay_Log_Space: 1858
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID: 3e11fa47-71ca-11e1-9e33-c80aa9429562
             Master_Info_File: /var/mysqld.2/data/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 10
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_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
1 row in set (0.00 sec)

次のリストは、SHOW SLAVE STATUS によって返されるフィールドについて説明しています。これらの意味の解釈の詳細は、セクション8.12.5.6「レプリケーションスレーブの I/O スレッド状態」を参照してください。

  • Slave_IO_State

    スレーブ I/O スレッドに対する SHOW PROCESSLIST の出力の State フィールドのコピー。これにより、このスレッドが何を実行しているか (マスターに接続しようとしている、マスターからのイベントを待機している、マスターに再接続しているなど) がわかります。可能性のある状態のリストについては、セクション8.12.5.6「レプリケーションスレーブの I/O スレッド状態」を参照してください。

  • Master_Host

    このスレーブが接続されているマスターホスト。

  • Master_User

    マスターに接続するために使用されるアカウントのユーザー名。

  • Master_Port

    マスターに接続するために使用されるポート。

  • Connect_Retry

    接続再試行の間の秒数 (デフォルトは 60)。これは、CHANGE MASTER TO ステートメントで設定できます。

  • Master_Log_File

    I/O スレッドが現在読み取っている元のマスターバイナリログファイルの名前。

  • Read_Master_Log_Pos

    現在のマスターバイナリログファイル内の I/O スレッドが最後に読み取った位置。

  • Relay_Log_File

    SQL スレッドが現在読み取って実行している元のリレーログファイルの名前。

  • Relay_Log_Pos

    現在のリレーログファイル内の SQL スレッドが最後に読み取って実行した位置。

  • Relay_Master_Log_File

    SQL スレッドによって実行された最新のイベントを含むマスターバイナリログファイルの名前。

  • Slave_IO_Running

    I/O スレッドが起動され、マスターに正常に接続したかどうか。内部的には、このスレッドの状態は次の 3 つの値のいずれかによって表されます。

    • MYSQL_SLAVE_NOT_RUN  スレーブ I/O スレッドは実行されていません。この状態の場合、Slave_IO_RunningNo です。

    • MYSQL_SLAVE_RUN_NOT_CONNECT  スレーブ I/O スレッドは実行されていますが、レプリケーションマスターに接続されていません。この状態の場合、Slave_IO_Running は、次の表に示すようにサーバーバージョンによって異なります。

      MySQL バージョン Slave_IO_Running
      4.1 (4.1.13 以前)、5.0 (5.0.11 以前) Yes
      4.1 (4.1.14 以降)、5.0 (5.0.12 以降) No
      5.1 (5.1.45 以前) No
      5.1 (5.1.46 以降)、5.5、5.6 Connecting
    • MYSQL_SLAVE_RUN_CONNECT  スレーブ I/O スレッドは実行されており、レプリケーションマスターに接続されています。この状態の場合、Slave_IO_RunningYes です。

    Slave_running システムステータス変数の値は、この値に対応します。

  • Slave_SQL_Running

    SQL スレッドが起動されたかどうか。

  • Replicate_Do_DBReplicate_Ignore_DB

    --replicate-do-db および --replicate-ignore-db オプションで指定されたデータベースのリスト (存在する場合)。

  • Replicate_Do_TableReplicate_Ignore_TableReplicate_Wild_Do_TableReplicate_Wild_Ignore_Table

    --replicate-do-table--replicate-ignore-table--replicate-wild-do-table、および --replicate-wild-ignore-table オプションで指定されたテーブルのリスト (存在する場合)。

  • Last_ErrnoLast_Error

    これらのカラムは、Last_SQL_Errno および Last_SQL_Error のエイリアスです。

    RESET MASTER または RESET SLAVE を発行すると、これらのカラムに表示されている値がリセットされます。

    注記

    スレーブ SQL スレッドは、エラーを受信すると、まずそのエラーをレポートしてから SQL スレッドを停止します。つまり、Slave_SQL_Running にまだ Yes が表示されているにもかかわらず、SHOW SLAVE STATUSLast_SQL_Errno に対して 0 以外の値を示す短い時間帯が存在します。

  • Skip_Counter

    sql_slave_skip_counter システム変数の現在の値。セクション13.4.2.4「SET GLOBAL sql_slave_skip_counter 構文」を参照してください。

  • Exec_Master_Log_Pos

    現在のマスターバイナリログファイル内の、SQL スレッドが処理対象の次のトランザクションまたはイベントの先頭をマークしながら読み取って実行した最後の位置。既存のスレーブから新しいスレーブを起動するときに、その新しいスレーブがこの位置から読み取りを開始するように、CHANGE MASTER TO ステートメントの MASTER_LOG_POS オプションでこの値を使用できます。マスターのバイナリログ内の (Relay_Master_Log_FileExec_Master_Log_Pos) で指定される座標は、リレーログ内の (Relay_Log_FileRelay_Log_Pos) で指定される座標に対応します。

    (MySQL 5.6.3 以降で slave_parallel_workers を 0 以外の値に設定することによって) マルチスレッドスレーブを使用している場合は、このカラム内の値が実際に、コミットされていないトランザクションがその前には残っていない低位境界値を表します。現在の実装では、別のデータベース上のトランザクションをスレーブ上でマスター上とは異なる順序で実行することが許可されるため、これは必ずしも、直近で実行されたトランザクションの位置ではありません。

  • Relay_Log_Space

    既存のすべてのリレーログファイルの合計サイズ。

  • Until_ConditionUntil_Log_FileUntil_Log_Pos

    START SLAVE ステートメントの UNTIL 句で指定された値。

    Until_Condition の値は次のとおりです。

    • UNTIL 句が指定されなかった場合は None

    • このスレーブがマスターのバイナリログ内の特定の位置まで読み取っている場合は Master

    • このスレーブがそのリレーログ内の特定の位置まで読み取っている場合は Relay

    MySQL 5.6.6 からは、次の値を持つ、GTID に関連した UNTIL 句が追加されました。

    • スレーブ SQL スレッドが、gtid_set に GTID がリストされている最初のトランザクションに達するまでトランザクションを処理している場合は、SQL_BEFORE_GTIDS

    • スレーブスレッドが、gtid_set 内の最後のトランザクションが両方のスレッドによって処理されるまですべてのトランザクションを処理している場合は、SQL_AFTER_GTIDS

    • マルチスレッドスレーブの SQL スレッドが、リレーログ内にそれ以上ギャップが見つからなくなるまで実行する場合は SQL_AFTER_MTS_GAPS

    Until_Log_FileUntil_Log_Pos は、ログファイルの名前と、SQL スレッドが実行を停止する座標を定義している位置を示します。

    UNTIL 句の詳細は、セクション13.4.2.5「START SLAVE 構文」を参照してください。

  • Master_SSL_AllowedMaster_SSL_CA_FileMaster_SSL_CA_PathMaster_SSL_CertMaster_SSL_CipherMaster_SSL_CRL_FileMaster_SSL_CRL_PathMaster_SSL_KeyMaster_SSL_Verify_Server_Cert

    これらのフィールドは、このスレーブがマスターに接続するために使用する SSL パラメータを表示します (存在する場合)。

    Master_SSL_Allowed の値は次のとおりです。

    • マスターへの SSL 接続が許可されている場合は Yes

    • マスターへの SSL 接続が許可されていない場合は No

    • SSL 接続は許可されているが、スレーブサーバーで SSL サポートが有効になっていない場合は Ignored

    その他の SSL 関連フィールドの値は、CHANGE MASTER TO ステートメントに対する MASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATHMASTER_SSL_KEY、および MASTER_SSL_VERIFY_SERVER_CERT オプションの値に対応します。セクション13.4.2.1「CHANGE MASTER TO 構文」を参照してください。

    Master_SSL_CRL_FileMaster_SSL_CRL_Path は MySQL 5.6.3 で追加されました。

  • Seconds_Behind_Master

    このフィールドは、このスレーブがどれだけ遅延しているかを示します。

    • このスレーブが更新をアクティブに処理している場合、このフィールドは、現在このスレーブ上で処理されている最新のイベントに対するスレーブ上の現在のタイムスタンプと、マスター上でログに記録されている元のタイムスタンプの違いを示します。

    • 現在このスレーブ上でイベントが処理されていない場合、この値は 0 です。

    基本的に、このフィールドは、スレーブ SQL スレッドとスレーブ I/O スレッドの間の時間差 (秒単位) を測定します。マスターとスレーブの間のネットワーク接続が高速である場合は、スレーブ I/O スレッドがマスターに非常に近いため、このフィールドは、スレーブ SQL スレッドがマスターに比べてどれだけ遅延しているかを示す良い近似値になります。このネットワークが低速である場合、これは良い近似値ではありません。スレーブ SQL スレッドが、読み取りの遅いスレーブ I/O スレッドに非常に頻繁に追い付かれる可能性があるため、I/O スレッドがマスターに比べて遅延している場合でも、Seconds_Behind_Master は多くの場合 0 の値を示します。つまり、このカラムは高速ネットワークの場合にのみ有効です

    この時間差の計算は、スレーブ I/O スレッドの起動時に計算された時間差がそれ以降も一定のままであれば、マスターとスレーブのクロック時間が同じでない場合でも機能します。何らかの変更 (NTP の更新を含む) があると、Seconds_Behind_Master の計算の信頼性を低下させるクロックスキューが発生する場合があります。

    MySQL 5.6.9 以降では、このフィールドは、スレーブ SQL スレッドが実行されていない場合、または SQL スレッドがすべてのリレーログを消費し、かつスレーブ I/O スレッドが実行されていない場合に NULL (未定義または不明) になります。以前は、このフィールドは、スレーブ SQL スレッドまたはスレーブ I/O スレッドが実行されていないか、あるいはマスターに接続されていない場合に NULL になりました。(Bug #12946333) たとえば、(MySQL 5.6.9 より前) スレーブ I/O スレッドが実行されているが、マスターに接続されておらず、再接続の前に CHANGE MASTER TO ステートメントまたは --master-connect-retry オプションで指定された秒数 (デフォルトは 60) だけスリープしている場合、この値は NULL でした。現在、このようなケースでは、マスターへの接続はテストされません。代わりに、I/O スレッドが実行されているが、リレーログが使い果たされた場合は、Seconds_Behind_Master が 0 に設定されます。

    Seconds_Behind_Master の値は、イベント内に格納されているタイムスタンプに基づいており、このタイムスタンプはレプリケーションを通して保持されます。つまり、マスター M1 がそれ自体 M0 のスレーブである場合、M0 のバイナリログに起因する M1 のバイナリログからのイベントはすべて、そのイベントに M0 のタイムスタンプを含んでいます。これにより、MySQL は TIMESTAMP を正常にレプリケートできます。ただし、Seconds_Behind_Master に関する問題は、M1 がクライアントからの直接の更新も受信した場合、M1 からの最後のイベントがときには M0 に起因し、またときには M1 上での直接の更新の結果であるため、Seconds_Behind_Master 値がランダムに変動することにあります。

    マルチスレッドスレーブ (MySQL 5.6.3 以降) を使用している場合は、この値が Exec_Master_Log_Pos に基づいているため、直近でコミットされたトランザクションの位置を反映していない可能性があります。

  • Last_IO_ErrnoLast_IO_Error

    I/O スレッドを停止させた最新のエラーのエラー番号とエラーメッセージ。0 のエラー番号および空の文字列のメッセージは、エラーなしを示します。Last_IO_Error 値が空でない場合、このエラー値はスレーブのエラーログにも現れます。

    MySQL 5.6.1 から、I/O エラーの情報には、最新の I/O スレッドエラーがいつ発生したかを示すタイムスタンプが含まれています。このタイムスタンプには、YYMMDD HH:MM:SS という形式が使用されます。

    MySQL 5.6.3 より前は、このタイムスタンプは、Last_IO_Error カラムに表示されるエラーメッセージテキストの前に付加されました。MySQL 5.6.3 以降では、このタイムスタンプは、代わりに Last_SQL_Error_Timestamp カラムに表示されます。

    RESET MASTER または RESET SLAVE を発行すると、これらのカラムに表示されている値がリセットされます。

  • Last_SQL_ErrnoLast_SQL_Error

    SQL スレッドを停止させた最新のエラーのエラー番号とエラーメッセージ。0 のエラー番号および空の文字列のメッセージは、エラーなしを示します。Last_SQL_Error 値が空でない場合、このエラー値はスレーブのエラーログにも現れます。

    MySQL 5.6.1 から、SQL エラーの情報には、最新の SQL スレッドエラーがいつ発生したかを示すタイムスタンプが含まれています。このタイムスタンプには、YYMMDD HH:MM:SS という形式が使用されます。

    MySQL 5.6.3 より前は、このタイムスタンプは、Last_SQL_Error カラムに表示されるエラーメッセージテキストの前に付加されました。MySQL 5.6.3 以降では、このタイムスタンプは、代わりに Last_SQL_Error_Timestamp カラムに表示されます。

    RESET MASTER または RESET SLAVE を発行すると、これらのカラムに表示されている値がリセットされます。

  • Replicate_Ignore_Server_Ids

    MySQL 5.6 では、CHANGE MASTER TO ステートメントの IGNORE_SERVER_IDS オプションを使用して、0 以上のマスターからのイベントを無視するようにスレーブを設定します。これはデフォルトではブランクであり、通常は、循環またはその他のマルチマスターレプリケーションセットアップを使用している場合にのみ変更されます。ブランクでないときに Replicate_Ignore_Server_Ids に表示されるメッセージは、無視されるサーバー ID を示す 1 つ以上の番号のカンマ区切りリストで構成されます。例:

    	Replicate_Ignore_Server_Ids: 2, 6, 9
    
    注記

    Ignored_server_ids も無視されるサーバー ID を示しますが、これは、無視されるサーバー ID の総数が前にあるスペースで区切られたリストです。たとえば、サーバー ID 2、6、または 9 を持つマスターを無視するようスレーブに指示するために IGNORE_SERVER_IDS = (2,6,9) オプションを含む CHANGE MASTER TO ステートメントが発行された場合、その情報は次のように表示されます。

    	Ignored_server_ids: 3 2 6 9
    

    ここで、3 は、無視されるサーバー ID の総数です。

    Replicate_Ignore_Server_Ids のフィルタリングは SQL スレッドではなく、I/O スレッドによって実行されます。つまり、フィルタで除外されるイベントはリレーログに書き込まれません。これは、SQL スレッドに適用される --replicate-do-table などのサーバーオプションによって実行されるフィルタリングアクションとは異なります。

  • Master_Server_Id

    マスターからの server_id 値。

  • Master_UUID

    マスターからの server_uuid 値。このフィールドは、MySQL 5.6.0 で追加されました。

  • Master_Info_File

    master.info ファイルの場所。このフィールドは、MySQL 5.6.0 で追加されました。

  • SQL_Delay

    このスレーブがマスターから遅延する必要がある秒数。このフィールドは、MySQL 5.6.0 で追加されました。

  • SQL_Remaining_Delay

    Slave_SQL_Running_StateWaiting until MASTER_DELAY seconds after master executed event である場合、このフィールドには残りの遅延秒数が含まれます。ほかのときは、このフィールドは NULL です。このフィールドは、MySQL 5.6.0 で追加されました。

  • Slave_SQL_Running_State

    SQL スレッドの状態 (Slave_IO_State に類似しています)。この値は、SHOW PROCESSLIST によって表示される SQL スレッドの State 値と同じです。セクション8.12.5.7「レプリケーションスレーブ SQL スレッドの状態」には、可能性のある状態のリストが示されています。このフィールドは、MySQL 5.6.0 で追加されました。

  • Master_Retry_Count

    接続が失われた場合に、このスレーブがマスターへの再接続を試みることができる回数。この値は、CHANGE MASTER TO ステートメントの MASTER_RETRY_COUNT オプション (推奨)、または古い --master-retry-count サーバーオプション (下位互換性のために引き続きサポートされています) を使用して設定できます。このフィールドは、MySQL 5.6.1 で追加されました。

  • Master_Bind

    このスレーブのバインド先のネットワークインタフェース (存在する場合)。これは、CHANGE MASTER TO ステートメントの MASTER_BIND オプションを使用して設定されます。

    このカラムは、MySQL 5.6.2 で追加されました。

  • Last_IO_Error_Timestamp

    最新の I/O エラーがいつ発生したかを示す YYMMDD HH:MM:SS 形式のタイムスタンプ。

    このカラムは、MySQL 5.6.3 で追加されました。以前 MySQL 5.6 では、このタイムスタンプは、Last_IO_Error に表示されるエラーテキストの前に付加されました。

  • Last_SQL_Error_Timestamp

    最新の SQL エラーがいつ発生したかを示す YYMMDD HH:MM:SS 形式のタイムスタンプ。

    このカラムは、MySQL 5.6.3 で追加されました。以前 MySQL 5.6 では、このタイムスタンプは、Last_SQL_Error に表示されるエラーテキストの前に付加されました。

  • Retrieved_Gtid_Set

    このスレーブによって受信されたすべてのトランザクションに対応するグローバルトランザクション ID のセット。GTID が使用されていない場合は空です。

    これは、リレーログ内に存在するか、またはこれまでに存在したすべての GTID のセットです。各 GTID は、Gtid_log_event が受信されるとすぐに追加されます。そのため、このセットには、部分的に転送されたトランザクションの GTID も含まれる場合があります。

    RESET SLAVE または CHANGE MASTER TO を実行したため、あるいは --relay-log-recovery オプションの効果のためにすべてのリレーログが失われた場合は、このセットがクリアされます。relay_log_purge = 1 のときは、最新のリレーログが常に保持されるため、このセットはクリアされません。

    このカラムは、MySQL 5.6.5 で追加されました。

    MySQL 5.6.10 より前は、この値は大文字で出力されました。MySQL 5.6.10 以降では、常に小文字で出力されます。(Bug #15869441)

  • Executed_Gtid_Set

    バイナリログに書き込まれたグローバルトランザクション ID のセット。これは、このサーバー上のグローバルな gtid_executed システム変数 (MySQL 5.6.9 より前の名前は gtid_done) の値や、このサーバー上での SHOW MASTER STATUS の出力内の Executed_Gtid_Set の値と同じです。GTID が使用されていない場合は空です。

    このカラムは、MySQL 5.6.5 で追加されました。

    MySQL 5.6.10 より前は、この値は大文字で出力されました。MySQL 5.6.10 以降では、常に小文字で出力されます。(Bug #15869441)

  • Auto_Position

    自動ポジショニングが使用されている場合は 1、それ以外の場合は 0。

    このカラムは、MySQL 5.6.10 で追加されました。(Bug #15992220)


User Comments
  Posted by Alexey Zilber on August 16, 2011
Here's a quick php code snippet to read your master.info and relay-log.info and generate a change master sql command from it. Very useful if you get corrupted relay logs or have had to purge your relay logs, etc.


<?php
$master_info
=array();
$relay_info=array();
$x=0;
$mi=fopen('/tmp/master.info','r'); //<-- replace
$ri=fopen('/tmp/relay-log.info','r'); //<-- replace

if($mi){
        while(!
feof($mi)){
        
$master_info[$x]=chop(fgets($mi,512));
        
$x++;
        }
        
fclose($mi);
}

$x=0;
if(
$ri){
        while(!
feof($ri)){
        
$relay_info[$x]=chop(fgets($ri,512));
        
$x++;
        }
        
fclose($ri);
}

$x=0;
echo 
"CHANGE MASTER TO MASTER_HOST='$master_info[3]',
      MASTER_USER='
$master_info[4]',  
      MASTER_PASSWORD='
$master_info[5]', 
      MASTER_LOG_FILE='
$relay_info[2]', 
      MASTER_LOG_POS=
$relay_info[3];";

exit(
0);
?>

Sign Up Login You must be logged in to post a comment.