以下列表显示了在副本服务器上复制 I/O (接收器) 线程的状态列中最常见的状态。此状态也出现在 Replica_IO_State
列中,该列由 SHOW REPLICA STATUS
语句显示,因此您可以使用该语句来了解正在发生的情况。
在 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(receiver)线程正在等待,直到SQL(applier)线程通过处理中继日志内容释放足够的空间,以便删除一些中继日志文件。 -
如果二进制日志转储请求失败(由于断开连接),线程将进入这个状态,睡眠一段时间,然后尝试重新连接。重试之间的间隔可以使用
CHANGE REPLICATION SOURCE TO
指定。 -
读取时发生错误(由于断开连接)。线程正在睡眠,直到
CHANGE REPLICATION SOURCE TO
语句设置的秒数,然后尝试重新连接。