以下列表显示了在副本服务器上复制 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
秒,则会发生超时。此时,线程认为连接已断开,并尝试重新连接。正在连接到主服务器
或正在连接到源服务器
之前的初始状态。线程正在停止时短暂出现的状态。
正在等待从服务器 SQL 线程释放足够的 relay 日志空间
您正在使用非零的
relay_log_space_limit
值,并且 relay 日志已增长到其组合大小超过此值。 I/O(接收器)线程正在等待 SQL(应用器)线程通过处理 relay 日志内容释放足够的空间,以便它可以删除一些 relay 日志文件。如果二进制日志转储请求失败(由于连接断开),线程将进入此状态并在休眠时定期尝试重新连接。可以使用
CHANGE REPLICATION SOURCE TO
语句指定重试间隔。读取时发生错误(由于连接断开)。线程正在休眠
CHANGE REPLICATION SOURCE TO
语句设置的秒数,然后再尝试重新连接。