MySQL主从复制
大约 1 分钟
MySQL主从复制
基础逻辑
所有的主从逻辑基本上都是把数据从主服务器同步到从服务器。
MySQL 也一样, 主库 上数据变化会写入二进制文件,binlog,中,然后通过IO把 binlog 的内容写入从库的中继日志中,然后从库从中继日志中读取并执行其中的 SQL语句 完成同步。
主要涉及三个线程: binlog 线程、I/O 线程和 SQL 线程。
- binlog 线程
负责将主库上的数据更改写入 binlog 中。
- I/O 线程
负责从主服务器上读取 binlog,并写入从库的中继日志中。
- SQL 线程
负责读取中继日志并重放其中的 SQL 语句。
同步模式
全同步模式
主库在写入 binlog 之后直接开始强制同步到从库,一直要等到从库完成数据同步才会返回给客户端,性能较差,非常少见。
半同步模式
半同步跟全同步的区别是,在IO那一步中继日志写入完成就给主库发个确认消息,主库 只要收到任意一个从库(假设一主多从)返回的确认消息就认为本次写操作成功,返回给客户端。