SHOW SLAVE STATUS语句
SHOW SLAVE STATUS [FOR CHANNEL channel]
该语句提供有关从属线程的基本参数的状态信息。它需要SUPER
或REPLICATION CLIENT
特权。
SHOW SLAVE STATUS
是非阻塞的。与并发运行时STOP SLAVE
,SHOW SLAVE STATUS
无需等待STOP SLAVE
完成关闭从SQL线程或从I / O线程(或两者)就返回。这可用于监视和其他应用程序,这些应用程序SHOW SLAVE STATUS
比确保返回最新数据更为重要,因此可以立即获得响应。
如果使用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 : 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 : 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 Master_public_key_path : public_key.pem Get_master_public_key : 0
性能架构提供了一些表,这些表公开了复制信息。这类似于SHOW SLAVE STATUS
语句中可用的信息,但以表格形式表示。有关详细信息,请参见“性能架构复制表”。
以下列表描述了由返回的字段SHOW SLAVE STATUS
。有关解释其含义的更多信息,请参见“检查复制状态”。
Slave_IO_State
从属I / O线程
State
的SHOW PROCESSLIST
输出字段的副本。这告诉您线程在做什么:尝试连接到主服务器,等待主服务器发出的事件,重新连接到主服务器,等等。有关可能状态的列表,请参见“复制从设备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
。
- MYSQL_SLAVE_NOT_RUN。从属I / O线程未运行。对于此状态,
Slave_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 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
。有关更多信息,请参见“复制和事务不一致”。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
条款的更多信息,请参见“ 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
说法。请参见“ALTER TABLE语句”。Seconds_Behind_Master
该字段指示从属的“延迟”时间:
- 当从属服务器正在积极处理更新时,此字段显示从属服务器上的当前时间戳与主服务器上针对当前正在从属服务器上处理的事件登录的原始时间戳之间的差异。
- 当前在从站上没有正在处理任何事件时,此值为0。
本质上,此字段以秒为单位测量从SQL线程和从I / O线程之间的时间差。如果主服务器和从服务器之间的网络连接速度很快,则从服务器的I / O线程与主服务器非常接近,因此此字段很好地近似了从服务器SQL线程与主服务器之间的比较。如果网络很慢,这不是一个很好的近似值。从属SQL线程经常会被读取速度较慢的从属I / O线程追赶,因此
Seconds_Behind_Master
即使I / O线程比主线程晚,它也经常显示为0。换句话说,此栏仅对快速网络有用。即使主机和从机的时钟时间不同,该时差计算也可以工作,前提是从机I / O线程启动时计算出的时差从那时起保持恒定。任何更改(包括NTP更新)都可能导致时钟偏斜,从而使计算的
Seconds_Behind_Master
可靠性降低。在MySQL 8.0中,
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
“性能模式”replication_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 8.0中,
Last_SQL_Errno
和Last_SQL_Error
列中显示的所有错误代码和消息均与 B.3.1节“服务器错误消息参考”中列出的错误值相对应。在以前的版本中并非总是如此。(缺陷#11760365,缺陷#52768)Replicate_Ignore_Server_Ids
使用该语句的
IGNORE_SERVER_IDS
选项指定的任何服务器IDCHANGE MASTER TO
,以便从服务器忽略来自这些服务器的事件。当其中一台服务器被删除时,此选项在循环或其他多主复制设置中使用。如果以此方式设置了任何服务器ID,则会显示一个用逗号分隔的一个或多个数字的列表。如果未设置服务器ID,则该字段为空白。注意
该表中的
Ignored_server_ids
值slave_master_info
还显示了要忽略的服务器ID,但以空格分隔的列表开头,前面是要忽略的服务器ID的总数。例如,如果发出了CHANGE MASTER TO
包含该IGNORE_SERVER_IDS =(2,6,9)
选项的语句来告诉从服务器忽略具有服务器ID 2、6或9的主服务器,则该信息如下所示:Replicate_Ignore_Server_Ids: 2, 6, 9
Ignored_server_ids: 3, 2, 6, 9
Replicate_Ignore_Server_Ids
过滤是由I / O线程而不是SQL线程执行的,这意味着被过滤掉的事件不会写入中继日志。这与服务器选项(如--replicate-do-table
适用于SQL线程)采取的过滤操作不同。注意
从MySQL 8.0.3起,如果
SET GTID_MODE=ON
在任何通道的现有服务器ID设置为时发出,则将发出弃用警告IGNORE_SERVER_IDS
。在开始基于GTID的复制之前,使用SHOW_SLAVE_STATUS
来检查并清除所涉及服务器上所有被忽略的服务器ID列表。您可以通过发出CHANGE MASTER TO
包含IGNORE_SERVER_IDS
带有空列表的选项的语句来清除列表。Master_Server_Id
server_id
来自主人的价值。Master_UUID
server_uuid
来自主人的价值。Master_Info_File
master.info
如果从站的主信息存储库使用文件而不是表,则文件的位置。崩溃安全从表已取代对用于主信息日志的文件的使用,并且master_info_repository=FILE
不赞成使用该设置。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
。“复制从站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
,则始终保留最新的中继日志,并且不会清除该集合。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)
有关更多信息,请参见“ CHANGE REPLICATION FILTER语句”。
Channel_name
正在显示的复制通道。始终有一个默认的复制通道,并且可以添加更多的复制通道。有关更多信息,请参见“复制通道”。
Master_TLS_Version
主服务器上使用的TLS版本。有关TLS版本的信息,请参见“加密的连接TLS协议和密码”。
Master_public_key_path
文件的路径名,该文件包含主服务器基于RSA密钥对的密码交换所需的主密钥的从属端副本。该文件必须为PEM格式。此列适用于使用
sha256_password
或caching_sha2_password
身份验证插件进行身份验证的从站。如果
Master_public_key_path
给出并指定了有效的公共密钥文件,则优先于Get_master_public_key
。Get_master_public_key
是否向主服务器请求基于RSA密钥对的密码交换所需的公钥。此列适用于使用
caching_sha2_password
身份验证插件进行身份验证的从站。对于该插件,除非请求,否则主服务器不会发送公钥。如果
Master_public_key_path
给出并指定了有效的公共密钥文件,则优先于Get_master_public_key
。