MySQL复制功能是通过三个线程实现的,一个在主服务器上,两个在从服务器上:
Binlog dump thread: 在slave连接master时,master创建了一个线程, 将二进制日志内容发送给slave。 这个线程可以在master上使用show processlist查看到,是一个标识为该Binlog Dump线程。Slave I/O thread: 当执行start slave在slave服务器上时,slave服务器创建一个I / O线程,该线程连接到master服务器并要求master服务器发送记录在其二进制日志中的更新。 从属I / O线程读取master 服务器Binlog Dump线程发送的更新,并将其复制到slave服务器中继日志relay-log的文件中。 同样也可以通过 show processlist命令查看,该线程的状态显示为 Slave_IO_runningSlave SQL thread: slave服务器创建一个SQL线程以读取中继日志(relay-log)中的事件并执行。
master的Binlog dump thread查看
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
slave的Slave I/O thread和Slave SQL thread查看
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
转载请注明原文地址:https://ipadbbs.8miu.com/read-2833.html