17.2.1 Replication Implementation Details 复制实施细节
MySQL 复制能力实现使用3个threads,一个在master上,另外2个在slave上:
Binlog dump thread, master创建一个thread 来发送binary log 内容到一个slave,当slave连接的时候。
这个线程可以在SHOW PROCESSLIST 数据中看到:
binary log dump thread 需要一个lock 在master 的binary log 用于读取要发送给slave的evnet.
当event被读取后,lock 释放, 甚至在event被发送给slave前。
Slave I/O thread, 当START SLAVE 语句在slave server上被执行,slave创建一个I/O thread,
slave连接到master,告诉master 发送它的binary log里的更新的内容
slave I/O 线程 读取 master的binlog dump thread 发送和复制它们到本地的文件,组成slave的relay log.
Slave SQL thread,slave 创建一个SQL thread 读取relay log ,是由slave I/O thread 写入。
在前面的描述中, 有三个线程 每个master/slave 连接。
一个master 有多个slave 创建一个binary log dump thread 为每个连接的slave,
每个slave 有它自己的I/O 和SQL threads.
一个slave 使用2个thread 来分别的从master 读取更新和,并执行它们成为单独的任务。
因此,如果读取语句的任务不会慢下来 如果执行语句是慢的。
例如, 如果slave server 有一段时间没有运行,它的I/O thread 可以很快的获取所有的bina