当master上的数据发生改变的时候,该事件(insert、update、delete)变化会按照顺序写入到binlog中,当主从同步开启的时候,slave上会创建2个线程。
-
I/O线程。该I/O线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的中继日志relay log。
- SQL线程。该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。
MySQL 的复制是主库主动推送日志到从库去的,是属于“推”日志的方式来做同步
中继日志(Relay Log)
中继日志文件Relay Log的文件格式、内容和二进制日志文件Binlog一样,唯一的区别在于从库上的SQL线程在执行完当前中继日志文件Relay Log中的事件之后,SQL线程会自动删除当前中继日志文件Relay Log,避免从库上的中继日志文件Relay Log占用过多的磁盘空间。