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选项指定的任何服务器ID- CHANGE 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。
