• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SHOW SLAVE STATUS语句

    SHOW SLAVE STATUS [FOR CHANNEL channel]
    

    该语句提供有关从属线程的基本参数的状态信息。它需要SUPERREPLICATION CLIENT特权。

    SHOW SLAVE STATUS是非阻塞的。与并发运行时STOP SLAVESHOW 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线程StateSHOW 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_RunningNo
      • MYSQL_SLAVE_RUN_NOT_CONNECT。从属I / O线程正在运行,但未连接到复制主服务器。对于此状态,Slave_IO_RunningConnecting
      • MYSQL_SLAVE_RUN_CONNECT。从属I / O线程正在运行,并已连接到复制主服务器。对于此状态,Slave_IO_RunningYes
    • Slave_SQL_Running

      SQL线程是否已启动。

    • Replicate_Do_DBReplicate_Ignore_DB

      --replicate-do-db--replicate-ignore-db选项或CHANGE REPLICATION FILTER语句指定的任何数据库的名称。如果使用了该FOR CHANNEL子句,则会显示特定于通道的复制过滤器。否则,将显示每个复制通道的复制过滤器。

    • 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选项,或CHANGE REPLICATION FILTER声明。如果使用了该FOR CHANNEL子句,则会显示特定于通道的复制过滤器。否则,将显示每个复制通道的复制过滤器。

    • Last_ErrnoLast_Error

      这些列是Last_SQL_Errno和的别名Last_SQL_Error

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

      注意

      当从属SQL线程收到错误时,它将首先报告该错误,然后停止该SQL线程。这意味着有一个很小的时间窗口,即使仍然显示SHOW SLAVE STATUS,其Last_SQL_Errno也会显示一个非零值。Slave_SQL_RunningYes

    • 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_FileExec_Master_Log_Pos在主服务器的二进制日志对应于给出的坐标()Relay_Log_FileRelay_Log_Pos在中继日志)。

      已执行的中继日志中的事务顺序不一致会导致该值成为“低水位线”。换句话说,保证在该头寸之前出现的交易已被保证已落实,但在该头寸之后的交易可能已承诺或未承诺。如果需要纠正这些差距,请使用START SLAVE UNTIL SQL_AFTER_MTS_GAPS。有关更多信息,请参见“复制和事务不一致”。

    • Relay_Log_Space

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

    • Until_ConditionUntil_Log_FileUntil_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条款的更多信息,请参见“ 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具有以下值:

      • Yes如果允许与主机的SSL连接
      • No如果不允许与主机的SSL连接
      • Ignored如果允许SSL连接,但从服务器未启用SSL支持

      其他SSL相关的字段的值对应的值MASTER_SSL_CAMASTER_SSL_CAPATHMASTER_SSL_CERTMASTER_SSL_CIPHERMASTER_SSL_CRLMASTER_SSL_CRLPATHMASTER_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_ErrnoLast_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_ErrnoLast_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 MASTERRESET SLAVE重置这些列中显示的值。

      在MySQL 8.0中,Last_SQL_ErrnoLast_SQL_Error列中显示的所有错误代码和消息均与 B.3.1节“服务器错误消息参考”中列出的错误值相对应。在以前的版本中并非总是如此。(缺陷#11760365,缺陷#52768)

    • Replicate_Ignore_Server_Ids

      使用该语句的IGNORE_SERVER_IDS选项指定的任何服务器ID CHANGE MASTER TO,以便从服务器忽略来自这些服务器的事件。当其中一台服务器被删除时,此选项在循环或其他多主复制设置中使用。如果以此方式设置了任何服务器ID,则会显示一个用逗号分隔的一个或多个数字的列表。如果未设置服务器ID,则该字段为空白。

      注意

      该表中的Ignored_server_idsslave_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 SLAVECHANGE 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_passwordcaching_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