MySQL半同步复制(Semisynchronous Replication, SBR)是在异步复制基础上增加了一定程度的同步性,旨在提高数据安全性,减少数据丢失的风险。
1.基本流程
1.1主服务器(Master)
-
事务处理与binlog记录:
- 客户端向主服务器发起写操作(如INSERT、UPDATE、DELETE等)。
- 主服务器执行这些操作,并将它们封装在一个或多个事务中。
- 事务完成后,主服务器将事务的所有更改记录到其本地的二进制日志(Binary Log, binlog)。binlog按顺序记录所有数据修改事件,每个事件包含操作类型、涉及的表名、行数据变化等信息。
-
binlog传输与确认:
- 主服务器上运行一个名为binlog dump线程的后台进程,负责监听从服务器的复制请求。
- 当从服务器连接到主服务器并请求复制时,binlog dump线程开始读取binlog中的事件,并通过网络将其发送到从服务器。
- 与异步复制不同之处在于,主服务器在此时会等待至少一个从服务器的确认,即从服务器必须将接收到的binlog事件写入到其本地的中继日志(Relay Log)并反馈给主服务器。
1.2从服务器(Slave)
-
连接与初始化:
- 从服务器启动一个I/O线程,该线程连接到主服务器并请求从某个特定的binlog位置(如最后一次同步的位置)开始复制。
- I/O线