SHOW SLAVE STATUS [FOR CHANNEL channel]
此语句提供有关副本线程基本参数的状态信息。它需要
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: repl
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
Replicate_Rewrite_DB:
Channel_name:
Master_TLS_Version: TLSv1.2
性能模式提供公开复制信息的表。这类似于SHOW SLAVE STATUS
声明中提供的信息,但以表格形式表示。有关详细信息,请参阅
第 25.12.11 节,“性能模式复制表”。
以下列表描述了 返回的字段
SHOW SLAVE STATUS
。有关解释其含义的其他信息,请参阅
第 16.1.7.1 节,“检查复制状态”。
Slave_IO_State
副本I/O 线程
State
的输出字段的 副本。SHOW PROCESSLIST
这会告诉您线程正在做什么:尝试连接到源、等待来自源的事件、重新连接到源等等。有关可能状态的列表,请参阅 第 8.14.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 线程是否已启动并已成功连接到源。在内部,此线程的状态由以下三个值之一表示:
MYSQL_SLAVE_NOT_RUN。 副本 I/O 线程未运行。对于这个状态,
Slave_IO_Running
是No
。MYSQL_SLAVE_RUN_NOT_CONNECT。 副本 I/O 线程正在运行,但未连接到复制源。对于这个状态,
Slave_IO_Running
是Connecting
。MYSQL_SLAVE_RUN_CONNECT。 副本 I/O 线程正在运行,并连接到复制源。对于这个状态,
Slave_IO_Running
是Yes
。
系统状态变量的值
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 MASTER
或RESET SLAVE
重置这些列中显示的值。笔记当副本 SQL 线程收到错误时,它首先报告错误,然后停止 SQL 线程。这意味着有一个小的时间窗口,在此期间
SHOW SLAVE STATUS
显示一个非零值,Last_SQL_Errno
尽管Slave_SQL_Running
仍然显示Yes
。Skip_Counter
sql_slave_skip_counter
系统变量 的当前值 。参见 SET GLOBAL sql_slave_skip_counter 语句。Exec_Master_Log_Pos
SQL 线程已读取和执行的当前源二进制日志文件中的位置,标记下一个要处理的事务或事件的开始。从现有副本启动新副本时,您可以将此值与
CHANGE MASTER TO
语句的MASTER_LOG_POS
选项一起使用,以便新副本从该点读取。源二进制日志中 ( , ) 给出的坐标与Relay_Master_Log_File
中继 日志中 ( , ) 给出的坐标相对应。Exec_Master_Log_Pos
Relay_Log_File
Relay_Log_Pos
已执行的中继日志中事务顺序的不一致可能导致该值成为“低水位线”。换句话说,保证在该位置之前出现的事务已提交,但在该位置之后的事务可能已提交或未提交。如果需要纠正这些差距,请使用
START SLAVE UNTIL SQL_AFTER_MTS_GAPS
. 有关更多信息,请参阅 第 16.4.1.32 节,“复制和事务不一致” 。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_File
并Until_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_CA
、MASTER_SSL_CAPATH
、MASTER_SSL_CERT
、MASTER_SSL_CIPHER
、MASTER_SSL_CRL
、MASTER_SSL_CRLPATH
、MASTER_SSL_KEY
和MASTER_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.7 中,
NULL
如果副本 SQL 线程未运行,或者 SQL 线程已消耗所有中继日志且副本 I/O 线程未运行,则此字段为(未定义或未知)。(在旧版本的 MySQL 中,NULL
如果副本 SQL 线程或副本 I/O 线程未运行或未连接到源,则此字段是。)如果 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 MASTER
或RESET SLAVE
重置这些列中显示的值。Last_SQL_Errno
,Last_SQL_Error
导致 SQL 线程停止的最近错误的错误号和错误消息。错误编号 0 和空字符串的消息表示“没有错误。”如果该
Last_SQL_Error
值不为空,则错误值也会出现在副本的错误日志中。如果副本是多线程的,则 SQL 线程是工作线程的协调器。在这种情况下,该
Last_SQL_Error
字段准确显示Last_Error_Message
Performance Schemareplication_applier_status_by_coordinator
表中的列显示的内容。修改字段值以表明其他工作线程中可能存在更多故障,这可以在replication_applier_status_by_worker
显示每个工作线程状态的表中看到。如果该表不可用,则可以使用副本错误日志。日志或replication_applier_status_by_worker
表还应该用于了解有关SHOW SLAVE STATUS
协调表或协调表显示的故障的更多信息。SQL 错误信息包括显示最近的 SQL 线程错误发生时间的时间戳。此时间戳使用格式
YYMMDD hh:mm:ss
, 并出现在Last_SQL_Error_Timestamp
列中。发出
RESET MASTER
或RESET SLAVE
重置这些列中显示的值。在 MySQL 5.7 中,
Last_SQL_Errno
和 列中显示的所有错误代码和消息都与服务器错误消息参考Last_SQL_Error
中列出的错误值相对应 。这在以前的版本中并不总是如此。(缺陷 #11760365,缺陷 #52768)Replicate_Ignore_Server_Ids
在 MySQL 5.7 中,您可以使用语句的
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 线程的值相同SHOW PROCESSLIST
。 第 8.14.7 节,“复制副本 SQL 线程状态”,提供了可能状态的列表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 都会在
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。
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
正在显示的复制通道。总是有一个默认的复制通道,可以添加更多的复制通道。有关详细信息,请参阅 第 16.2.2 节,“复制通道”。
Master_TLS_Version
源上使用的 TLS 版本。有关 TLS 版本信息,请参阅 第 6.3.2 节,“加密连接 TLS 协议和密码”。该列是在 MySQL 5.7.10 中添加的。