MySql教程

MySQL Replication Thread States

本文主要是介绍MySQL Replication Thread States,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 1.主节点线程状态(Replication Master Thread States):

Finished reading one binlog; switching to next binlog

线程 已经完成读取 binlog 文件,并切换到下一个 binlog 文件

Master has sent all binlog to slave; waiting for more updates

线程已经从二进制日志中读取了所有剩余的更新日 志,并将它们发送到从库。线程当前处于空闲状态,正在等待新 的更新数据的事件写入二进制日志中

Sending binlog event to slave

线程已经从二进制日志中读取 了一个事件,现在将其发送到从库(二进制日志由事件组成,一 个事件通常是由发生更新的数据和一些其他信息组成)

Waiting to finalize termination

线程停止时发生的非常短暂 的状态,线程正在执行停止线程相关的动作

2.从库IO线程 State(Replication Slave I/O Thread States):

Checking master version

在建立与主库的连接之后非常短暂 的状态,表示正在检查主库的版本号

Connecting to master

线程尝试连接到主库

Queueing master event to the relay log

线程已读取一个事 件,并将其复制到中继日志,以便 SQL 线程进行重放

Reconnecting after a failed binlog dump request

线程正在 尝试重新连接到主库

Reconnecting after a failed master event read

线程正在尝 试重新连接到主库,当重连连接成功时,状态将变为“Waiting for master to send event”

Registering slave on master

在连接到主库成功之后非常短暂 的状态,表示正在向主库注册从库的连接信息(如从库的 IP 和端 口信息等)

Requesting binlog dump

在与主库建立连接成功之后非常短 暂的状态,使用当前的 I/O 线程位置,向主库发送从当前位置开 始的二进制日志的内容的请求

Waiting for its turn to commit

如果启用了 slave_preserve_commit_order 参数,则表示从库 I/O 线程正在 等待较旧的工作线程提交数据

Waiting for master to send event

线程已经连接到主库并且 正在等待新的二进制日志事件,如果主库空闲,这可能持续很长 时间。如果等待时间持续超过 slave_net_timeout 秒,则从库 I/O 线程发生超时。此时,从库 I/O 线程认为主库的连接断开, 会尝试重新连接主库

Waiting for master update

连接到主库之前的初始状态

Waiting for slave mutex on exit

线程停止时短暂发生的状 态,表示正在回收 I/O 线程的相关互斥资源

Waiting for the slave SQL thread to free enough relay log space

如果 relay_log_space_limit 变量设置值不为 0,那么当 中继日志总大小增长到超过此值时。 I/O 线程会等待,直到 SQL 线程通过重放中继日志内容并删除重放完成的中继日志以释放中 继日志占用的空间,使其满足中继日志中大小不大于 relay_log_space_limit 变量的值时,I/O 线程才可以继续写入中 继日志操作。

Waiting to reconnect after a failed binlog dump request

如果二进制日志 dump 请求失败(由于断开连接),那么线程在 进入 sleep 状态,此时出现此状态,然后 I/O 线程定期尝试重新 连接主库。重试之间的间隔时间可以使用 CHANGE MASTER TO 语句的 MASTER_CONNECT_RETRY 选项指定

* 要注意,从库的 I/O 线程连接主库是有心跳机制的,当主库超 过这个心跳时间没有发送新的 event 到 slave 上时,I/O 线程就 对主库发起一个心跳请求,如果请求成功就重置心跳时间,当主 库有新的 event 发送到 slave 时,这个心跳时间也会进行重置。 心跳时间由 change master 语句的 MASTER_HEARTBEAT_PERIOD 选项设置(以秒为单位),范围 0 到 4294967 秒,分辨率(毫秒) 最小非零值为 0.001,表示 1 毫秒。将间隔设置为 0 时表示禁用心跳。 默认值是 slave_net_timeout 配置参数的二分之一。so,理论上是不会出 现主从数据库正常的情况下因为主库没有写数据而导致从库 I/O 线程断开的情况。

Waiting to reconnect after a failed master event read

读取 主库 binlog 时发生错误(由于断开连接)。I/O 线程在尝试重新 连接主库之前,线程正在以 CHANGE MASTER TO 语句的 MASTER_CONNECT_RETRY 选项(默认为 60)设置的秒数进行 sleep(该时间是重连失败之后的重试间隔时间)

3.从库SQL线程 State(Replication Slave SQL Thread States):

Killing slave

线程正在处理 STOP SLAVE 语句 o Making temporary file (append) before replaying LOAD DATA INFILE:线程正在执行 LOAD DATA INFILE 语句,并将 从库将要读取的数据添加到临时文件中

Making temporary file (create) before replaying LOAD DATA INFILE

线程正在执行 LOAD DATA INFILE 语句,且正 在创建临时文件,临时文件中包含了从库将要读取行数据。注 意:只有在 MySQL 5.0.3 之前的版本中,主库记录了原始 LOAD DATA INFILE 语句时,才能遇到此状态

Reading event from the relay log

线程正在从中继日志中读 取事件,以便进行重放

Slave has read all relay log; waiting for more updates

线程 已重做完所有的中继日志文件中的所有事件,正在等待 I/O 线程 向中继日志中写入新的事件

Waiting for an event from Coordinator

从库使用多线程复制 时(slave_parallel_workers 大于 1),此状态表示一个 slave works 线程正在等待协调器线程(Coordinator 线程)分配日志 事件

Waiting for slave mutex on exit

线程停止时发生的非常短暂 的状态

Waiting for Slave Workers to free pending events

当 Workers 线程处理的事件的总数量大小超过 slave_pending_jobs_size_max 系统变量的大小时,会发生等待 操作(协调器线程不进行分配事件给 worker 线程)。当 Workers 线程处理的事件的总数量大小低于 slave_pending_jobs_size_max 限制时,协调器恢复调度。只有 当 slave_parallel_workers 设置为大于 0 时,此状态才会出现

Waiting for the next event in relay log

“Reading event from the relay log”状态之前的初始状态

Waiting until MASTER_DELAY seconds after master executed event

SQL 线程已读取事件,但并没有进行应用,而 是正在等待从库设置的延迟复制时间失效。此延迟时间使用 CHANGE MASTER TO 的 MASTER_DELAY 选项设置

4.从库连接线程 State(Replication Slave Connection Thread States):

Changing master

线程正在处理 CHANGE MASTER TO 语句

Killing slave

线程正在处理 STOP SLAVE 语句

Opening master dump table

此状态发生在主库创建 dump 表之后

Reading master dump table data

"Opening master dump table"状态之后出现的状态,表示正在从主库 dump 表读取数据

这篇关于MySQL Replication Thread States的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!