MySQL主从复制的核心就是二进制文件binlog。binlog记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(select, show)语句。
主从同步分为三步:
- master主库在事务提交时,会把数据变更记录在二进制日志文件binlog中。
- 当slave执行
start slave指令时,从库将创建一个 I/O 线程,该线程用于连接主库并让主库发送记录在其二进制日志(主库二进制日志)中的语句。 - master会创建一个Binlog Dump线程将其二进制日志的内容发送到slave。
- slave收到master的二进制日志文件,写入到slave的中继日志relay log中。
- slave重做中继日志中的事件,将改变反映它自己的数据。