MySQL 8.0 参考手册  / 第十七章复制  / 17.2 复制实现  / 17.2.3 复制线程  /  16.2.3.1 监控复制主线程

16.2.3.1 监控复制主线程

SHOW PROCESSLIST语句提供的信息告诉您在源和副本上发生的有关复制的情况。有关源状态的信息,请参阅第 8.14.5 节,“复制源线程状态”。对于副本状态,请参阅 第 8.14.6 节,“复制副本 I/O 线程状态”第 8.14.7 节,“复制副本 SQL 线程状态”

以下示例说明了三个主要复制线程(二进制日志转储线程、复制 I/O 线程和复制 SQL 线程)如何显示在 SHOW PROCESSLIST.

在源服务器上,输出SHOW PROCESSLIST如下所示:

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 2
   User: root
   Host: localhost:32931
     db: NULL
Command: Binlog Dump
   Time: 94
  State: Has sent all binlog to slave; waiting for binlog to
         be updated
   Info: NULL

此处,线程 2 是为Binlog Dump连接的副本提供服务的线程。该State 信息表明所有未完成的更新都已发送到副本,并且源正在等待更多更新的发生。如果您Binlog Dump 在源服务器上看不到任何线程,这意味着复制没有运行;也就是说,当前没有连接任何副本。

在副本服务器上,输出SHOW PROCESSLIST如下所示:

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 10
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Waiting for master to send event
   Info: NULL
*************************** 2. row ***************************
     Id: 11
   User: system user
   Host:
     db: NULL
Command: Connect
   Time: 11
  State: Has read all relay log; waiting for the slave I/O
         thread to update it
   Info: NULL

State信息表明线程 10 是与源服务器通信的复制 I/O 线程,线程 11 是正在处理存储在中继日志中的更新的复制 SQL 线程。在SHOW PROCESSLIST运行时,两个线程都处于空闲状态,等待进一步的更新。

列中的值Time可以显示副本与源相比有多晚。请参阅 第 A.14 节,“MySQL 5.7 常见问题解答:复制”。如果在源端经过足够的时间而Binlog Dump线程上没有活动,则源确定副本不再连接。对于任何其他客户端连接,超时取决于 和 的 net_write_timeoutnet_retry_count;有关这些的更多信息,请参阅第 5.1.7 节,“服务器系统变量”

SHOW SLAVE STATUS语句提供了有关副本服务器上的复制处理的附加信息。请参阅 第 16.1.7.1 节,“检查复制状态”