以下列表显示了在副本服务器上复制 I/O(接收器)线程的 State
列中最常见的状态。此状态也出现在 SHOW REPLICA STATUS
显示的 Replica_IO_State
列中,因此您可以通过使用该语句很好地了解正在发生的事情。
在 MySQL 8.0 中,对检测名称进行了一些不兼容的更改。使用这些检测名称的监控工具可能会受到影响。如果这些不兼容的更改对您有影响,请将 terminology_use_previous
系统变量设置为 BEFORE_8_0_26
,以使 MySQL 服务器使用先前列表中指定的对象的旧版本名称。这使得依赖旧名称的监控工具能够继续工作,直到它们可以更新为使用新名称。
以会话范围设置 terminology_use_previous
系统变量以支持单个函数,或以全局范围设置以作为所有新会话的默认值。当使用全局范围时,慢查询日志包含旧版本的名称。
与源服务器建立连接后,会短暂出现的一种状态。
线程正在尝试连接到源服务器。
线程已读取一个事件,并正在将其复制到中继日志中,以便 SQL 线程可以对其进行处理。
线程正在尝试重新连接到源服务器。
线程正在尝试重新连接到源服务器。再次建立连接后,状态变为
正在等待主服务器发送事件
。与源服务器建立连接后,会短暂出现的一种状态。
与源服务器建立连接后,会短暂出现的一种状态。线程向源服务器发送对其二进制日志内容的请求,从请求的二进制日志文件名和位置开始。
如果启用了
replica_preserve_commit_order
,则当副本线程正在等待较旧的工作线程提交时,会发生此状态。线程已连接到源,正在等待二进制日志事件到达。如果源处于空闲状态,这可能会持续很长时间。如果等待时间超过
replica_net_timeout
秒,则会发生超时。此时,线程会认为连接已断开,并尝试重新连接。正在连接到主服务器
或正在连接到源
之前的初始状态。线程正在停止时出现的短暂状态。
您正在使用非零的
relay_log_space_limit
值,并且转播日志已增长到其总大小超过此值。 I/O(接收器)线程正在等待,直到 SQL(应用器)线程通过处理转播日志内容释放足够的空间,以便它可以删除一些转播日志文件。如果二进制日志转储请求失败(由于连接断开),线程将进入此状态并休眠,然后定期尝试重新连接。可以使用
CHANGE REPLICATION SOURCE TO
语句指定重试之间的间隔。读取时发生错误(由于连接断开)。线程正在休眠
CHANGE REPLICATION SOURCE TO
语句设置的秒数,然后再尝试重新连接。