MySQL主从同步流程图
主要步骤:
- Master接受写请求,数据落磁盘的同时,记录操作到
bin-log
(binary-log,二进制形式的数据日志文件) - 当Master存在Slave的连接时,启动一个
bin-log dump线程
监听bin-log的变化。 - 当
bin-log dump线程
监听到bin-log
的变化时,将变化的数据推送给Slave。 - Slave的
I/O线程
接收bin-log的变化通知,并将其写入到本地的relay-log
。 - Slave的
SQL线程
从relay-log拉取数据,并写入到本地的DB文件中,完成主从同步。
注意事项:
可得MySQL的主从同步是一个异步的过程,主从间存在一定的数据延迟,如果对数据一致性要求高的话,不应该在原生MySQL主从同步机制下采取读写分离。
bin-log的三种数据格式
- statement:对写操作的sql记录到binlog。
- row:将原生的数据(行)存入到binlog中。
- mixed:statement和row的组合,MySQL会决定什么时候记录什么格式的数据日志。