• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 检查复制状态

    管理复制过程时,最常见的任务是确保正在进行复制,并且从属服务器和主服务器之间没有错误。

    SHOW SLAVE STATUS您必须在每个从服务器上执行的语句提供有关从服务器和主服务器之间的连接的配置和状态的信息。从MySQL 5.7起,性能模式具有复制表,这些复制表以更易于访问的形式提供此信息。请参见“性能架构复制表”。

    通过性能架构复制表中显示的复制心跳信息,即使主服务器最近未将事件发送到从服务器,您也可以检查复制连接是否处于活动状态。如果二进制日志中没有更新,并且没有未发送的事件,并且比心跳间隔更长的时间,则主设备会向从设备发送心跳信号。该MASTER_HEARTBEAT_PERIOD在主(由所设置的设置CHANGE MASTER TO语句)指定心跳的频率,默认为用于从属连接超时间隔的一半(slave_net_timeout)。的replication_connection_status性能架构表显示复制从属服务器何时接收到最新的心跳信号,以及已接收到多少个心跳信号。

    如果使用该SHOW SLAVE STATUS语句检查单个从站的状态,则该语句提供以下信息:

    mysql> SHOW SLAVE STATUS\G
    *************************** 1. row 	***************************
                   Slave_IO_State	: Waiting for master to send event
                      Master_Host	: master1
                      Master_User	: root
                      Master_Port	: 3306
                    Connect_Retry	: 60
                  Master_Log_File	: mysql-bin.000004
              Read_Master_Log_Pos	: 931
                   Relay_Log_File	: slave1-relay-bin.000056
                    Relay_Log_Pos	: 950
            Relay_Master_Log_File	: mysql-bin.000004
                 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	: 931
                  Relay_Log_Space	: 1365
                  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	: 0
    

    状态报告中要检查的关键字段是:

    • Slave_IO_State:从站的当前状态。有关更多信息,请参见“复制从属I / O线程状态”和“复制从属SQL线程状态”。
    • Slave_IO_Running:用于读取主设备二进制日志的I / O线程是否正在运行。通常,Yes除非您尚未开始复制或使用明确停止了复制,否则您希望这样做STOP SLAVE
    • Slave_SQL_Running:用于执行中继日志中事件的SQL线程是否正在运行。与I / O线程一样,通常应为Yes
    • Last_IO_ErrorLast_SQL_Error:处理中继日志时I / O和SQL线程注册的最后错误。理想情况下,这些应该为空白,表示没有错误。
    • Seconds_Behind_Master:从属SQL线程落后于处理主二进制日志的秒数。较高的数字(或递增的数字)可以指示从属无法及时处理来自主控的事件。

      Seconds_Behind_Master通常将 0的值解释为从属已跟上了主人,但是在某些情况下,这并非完全正确。例如,如果主服务器和从服务器之间的网络连接断开,但从服务器的I / O线程尚未注意到这一点(即slave_net_timeout尚未过去),则可能发生这种情况。

      的瞬态值Seconds_Behind_Master也可能无法准确反映情况。当从属SQL线程追上I / O时,Seconds_Behind_Master显示0;否则,显示0。但是当从属I / O线程仍在排队新事件时,Seconds_Behind_Master可能会显示一个较大的值,直到SQL线程完成执行新事件为止。当事件具有旧时间戳时,这种情况尤其可能发生;在这种情况下,如果您SHOW SLAVE STATUS在较短的时间内执行了几次,则可能会看到此值在0和较大的值之间来回反复变化。

    几对字段提供有关从设备从主二进制日志读取事件并在中继日志中处理事件的进度信息:

    • Master_Log_fileRead_Master_Log_Pos):主二进制日志中的坐标,指示从I / O线程已从该日志读取事件的距离。
    • Relay_Master_Log_FileExec_Master_Log_Pos):主二进制日志中的坐标,指示从SQL线程已执行从该日志接收的事件的距离。
    • Relay_Log_FileRelay_Log_Pos):从属中继日志中的坐标,指示从属SQL线程已执行中继日志的距离。这些对应于先前的坐标,但是以从属中继日志坐标而不是主二进制日志坐标表示。

    在主服务器上,您可以使用SHOW PROCESSLIST检查运行的进程列表来检查已连接的从服务器的状态。从站连接Binlog Dump在该Command字段中:

    mysql> SHOW PROCESSLIST \G;
    *************************** 4. row 	***************************
         Id	: 10
       User	: root
       Host	: slave1	:58371
         db	: NULL
    Command	: Binlog Dump
       Time	: 777
      State	: Has sent all binlog to slave; waiting for binlog to be updated
       Info	: NULL
    

    由于是从属驱动复制过程,因此该报告中几乎没有可用的信息。

    对于以该--report-host选件启动并连接到主站的从站,主站上的SHOW SLAVE HOSTS语句显示有关从站的基本信息。输出包括从服务器的ID,--report-host选项的值,连接端口和主ID:

    mysql> SHOW SLAVE HOSTS;
    +-----------	+--------	+------	+-------------------	+-----------	+
    | Server_id 	| Host   	| Port 	| Rpl_recovery_rank 	| Master_id 	|
    +-----------	+--------	+------	+-------------------	+-----------	+
    |        10 	| slave1 	| 3306 	|                 0 	|         1 	|
    +-----------	+--------	+------	+-------------------	+-----------	+
    1 row in set (0.00 sec)