Documentation Home

13.7.5.35 SHOW SLAVE STATUS 语句

SHOW SLAVE STATUS

此语句提供有关副本线程基本参数的状态信息。它需要 SUPERREPLICATION 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: source-bin.000002
          Read_Master_Log_Pos: 1307
               Relay_Log_File: replica-relay-bin.000003
                Relay_Log_Pos: 1508
        Relay_Master_Log_File: source-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: Reading event from the relay log
           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

以下列表描述了 返回的字段 SHOW SLAVE STATUS。有关解释其含义的其他信息,请参阅 第 8.14.7 节,“复制副本 I/O 线程状态”

  • Slave_IO_State

    副本I/O 线程State的输出字段的 副本。SHOW PROCESSLIST这会告诉您线程正在做什么:尝试连接到源、等待来自源的事件、重新连接到源等等。有关可能状态的列表,请参阅 第 8.14.7 节,“复制副本 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 线程是否已启动并已成功连接到源。在内部,此线程的状态由以下三个值之一表示:

    • MYSQL_SLAVE_NOT_RUN。  副本 I/O 线程未运行。对于这个状态, Slave_IO_RunningNo

    • MYSQL_SLAVE_RUN_NOT_CONNECT。  副本 I/O 线程正在运行,但未连接到复制源。对于这个状态, Slave_IO_RunningConnecting

    • MYSQL_SLAVE_RUN_CONNECT。  副本 I/O 线程正在运行,并连接到复制源。对于这个状态, Slave_IO_RunningYes

    系统状态变量的值 Slave_running对应于这个值。

  • Slave_SQL_Running

    SQL线程是否启动。

  • Replicate_Do_DB, Replicate_Ignore_DB

    --replicate-do-db使用和 选项 指定的数据库列表( --replicate-ignore-db 如果有)。

  • 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 如果有)。

  • Last_Errno,Last_Error

    这些列是 Last_SQL_Errno和 的别名Last_SQL_Error

    发出RESET MASTERRESET SLAVE重置这些列中显示的值。

    笔记

    当副本 SQL 线程收到错误时,它首先报告错误,然后停止 SQL 线程。这意味着有一个小的时间窗口,在此期间 SHOW SLAVE STATUS显示一个非零值,Last_SQL_Errno尽管Slave_SQL_Running仍然显示 Yes

  • 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_File中继 日志中 ( , ) 给出的坐标相对应。Exec_Master_Log_PosRelay_Log_FileRelay_Log_Pos

    当使用多线程副本(通过设置 slave_parallel_workers为非零值)时,此列中的值实际上表示一个低水位标记,在此之前没有未提交的事务。因为当前的实现允许在副本上以不同于源上的顺序在不同的数据库上执行事务,所以这不一定是最近执行的事务的位置。

  • Relay_Log_Space

    所有现有中继日志文件的总组合大小。

  • Until_Condition, Until_Log_File, Until_Log_Pos

    UNTIL在语句的子句中 指定的值START SLAVE

    Until_Condition具有以下值:

    • None如果没有UNTIL 指定子句

    • Master如果副本正在读取直到源二进制日志中的给定位置

    • Relay如果副本正在读取直到其中继日志中的给定位置

    • SQL_BEFORE_GTIDS如果副本 SQL 线程正在处理事务,直到它到达 GTID 中列出的第一个事务 gtid_set

    • SQL_AFTER_GTIDS如果副本线程正在处理所有事务,直到两个线程都处理了中的最后一个事务gtid_set

    • SQL_AFTER_MTS_GAPS如果多线程副本的 SQL 线程正在运行,直到在中继日志中找不到更多间隙。

    Until_Log_FileUntil_Log_Pos指示定义 SQL 线程停止执行的坐标的日志文件名和位置。

    有关UNTIL子句的更多信息,请参阅第 13.4.2.5 节,“START SLAVE 语句”

  • Master_SSL_Allowed,,,,,,,,, Master_SSL_CA_File_ Master_SSL_CA_Path_ Master_SSL_Cert_ Master_SSL_Cipher_ Master_SSL_CRL_File_ Master_SSL_CRL_Path_ Master_SSL_Key_ Master_SSL_Verify_Server_Cert

    这些字段显示副本用于连接源的 SSL 参数(如果有)。

    Master_SSL_Allowed具有以下值:

    • Yes如果允许与源的 SSL 连接

    • No如果不允许与源的 SSL 连接

    • Ignored如果允许 SSL 连接但副本服务器未启用 SSL 支持

    其他 SSL 相关字段的值对应于 语句的MASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATHMASTER_SSL_KEYMASTER_SSL_VERIFY_SERVER_CERT选项的值。CHANGE MASTER TO请参阅第 13.4.2.1 节,“将 MASTER 更改为语句”

  • Seconds_Behind_Master

    该字段指示副本 有多” :

    • 当副本正在积极处理更新时,此字段显示副本上的当前时间戳与副本上当前正在处理的事件的源上记录的原始时间戳之间的差异。

    • 当副本上当前没有正在处理的事件时,此值为 0。

    本质上,该字段测量副本 SQL 线程和副本 I/O 线程之间的时间差(以秒为单位)。如果源和副本之间的网络连接很快,副本 I/O 线程离源很近,所以这个字段是副本 SQL 线程比源多晚的一个很好的近似值。如果网络很慢,这不是一个很好的近似;副本 SQL 线程可能经常被读取速度慢的副本 I/O 线程追上,因此 Seconds_Behind_Master通常显示 0 值,即使 I/O 线程比源线程晚。换句话说,此列仅对快速网络有用.

    即使源和副本没有相同的时钟时间,这种时间差计算也有效,前提是在副本 I/O 线程启动时计算的差异从那时起保持不变。任何更改(包括 NTP 更新)都可能导致时钟偏差,从而降低计算的Seconds_Behind_Master可靠性。

    在 MySQL 5.6.9 及更高版本中, NULL如果副本 SQL 线程未运行,或者 SQL 线程已消耗所有中继日志且副本 I/O 线程未运行,则此字段为(未定义或未知)。以前, NULL如果副本 SQL 线程或副本 I/O 线程未运行或未连接到源,则此字段。(错误 #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 的副本,则 M1 的二进制日志中源自 M0 的二进制日志的任何事件都具有 M0 的该事件的时间戳。这使 MySQL 能够 TIMESTAMP成功复制。然而,问题 Seconds_Behind_Master在于,如果 M1 也接收来自客户端的直接更新,则该 Seconds_Behind_Master值会随机波动,因为有时来自 M1 的最后一个事件源自 M0,有时是 M1 上直接更新的结果。

    使用多线程副本时,请记住该值基于 Exec_Master_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 MASTERRESET SLAVE重置这些列中显示的值。

  • Last_SQL_Errno, Last_SQL_Error

    导致 SQL 线程停止的最近错误的错误号和错误消息。错误编号 0 和空字符串的消息表示没有错误。如果该Last_SQL_Error值不为空,则错误值也会出现在副本的错误日志中。

    SQL 错误信息包括显示最近的 SQL 线程错误发生时间的时间戳。此时间戳使用格式YYMMDD hh:mm:ss, 并出现在Last_SQL_Error_Timestamp 列中。

    发出RESET MASTERRESET SLAVE重置这些列中显示的值。

  • Replicate_Ignore_Server_Ids

    在 MySQL 5.6 中,您可以使用语句的IGNORE_SERVER_IDS选项将 副本设置为忽略来自 0 个或多个源的事件 。CHANGE MASTER TO默认情况下这是空白的,通常只有在使用循环或其他多源复制设置时才会修改。当非空白时显示的消息 Replicate_Ignore_Server_Ids包含一个或多个数字的逗号分隔列表,指示要忽略的服务器 ID。例如:

    	Replicate_Ignore_Server_Ids: 2, 6, 9
    笔记

    Ignored_server_ids还显示要忽略的服务器 ID,但它是一个以空格分隔的列表,前面是要忽略的服务器 ID 总数。例如,如果已发出CHANGE MASTER TO包含选项的语句 IGNORE_SERVER_IDS = (2,6,9)告诉副本忽略具有服务器 ID 2、6 或 9 的源,则该信息显示为:

    	Ignored_server_ids: 3 2 6 9

    其中3是被忽略的服务器 ID 总数。

    Replicate_Ignore_Server_Ids过滤由 I/O 线程执行,而不是由 SQL 线程执行,这意味着被过滤掉的事件不会写入中继日志。这不同于 --replicate-do-table适用于 SQL 线程的服务器选项(例如 )采取的过滤操作。

  • Master_Server_Id

    server_id来自源 的价值。

  • Master_UUID

    server_uuid来自源 的价值。

  • Master_Info_File

    文件的位置master.info

  • SQL_Delay

    副本必须滞后于源的秒数。

  • SQL_Remaining_Delay

    Slave_SQL_Running_State为 时Waiting until MASTER_DELAY seconds after master executed event,此字段包含剩余的延迟秒数。在其他时候,这个字段是 NULL

  • Slave_SQL_Running_State

    SQL 线程的状态(类似于 Slave_IO_State)。该值与; State显示的 SQL 线程的值相同。第 8.14.8 节,“复制副本 SQL 线程状态”,提供了可能状态的列表。 SHOW PROCESSLIST

  • Master_Retry_Count

    在连接丢失的情况下,副本可以尝试重新连接到源的次数。可以使用语句 的MASTER_RETRY_COUNT 选项(首选)或较旧的服务器选项(仍然支持向后兼容)来设置此值。 CHANGE MASTER TO--master-retry-count

  • Master_Bind

    副本绑定到的网络接口(如果有)。这是使用 语句 的MASTER_BIND选项设置的。CHANGE MASTER TO

  • Last_IO_Error_Timestamp

    格式的时间戳YYMMDD hh:mm:ss ,显示最近发生 I/O 错误的时间。

  • Last_SQL_Error_Timestamp

    时间戳YYMMDD hh:mm:ss 格式显示最近的 SQL 错误发生的时间。

  • Retrieved_Gtid_Set

    与此副本接收的所有事务对应的一组全局事务 ID。如果未使用 GTID,则为空。

    这是中继日志中存在或已经存在的所有 GTID 的集合。每个 GTID 都会在 Gtid_log_event收到后立即添加。这可能会导致部分传输的事务将其 GTID 包含在集合中。

    当所有中继日志由于执行 RESET SLAVE或 而丢失时CHANGE MASTER TO,或者由于 --relay-log-recovery选项的影响,该集合被清除。时 relay_log_purge = 1,始终保留最新的relay log,不清除集合。

  • Executed_Gtid_Set

    写入二进制日志的一组全局事务 ID。这与此服务器上的全局 gtid_executed系统变量的值以及此服务器 上Executed_Gtid_Set的输出中 的值相同SHOW MASTER STATUS。如果未使用 GTID,则为空。有关详细信息,请参阅 GTID 集

  • Auto_Position

    1 如果正在使用自动定位;否则为 0。