MySQL是大型架构核心,下面我详解MySQL主从@mikechen
MySQL主从
MySQL主从是高可用、读写分离、数据备份与扩展能力建设中的核心技术。
MySQL主从,指的是将主库(Master)上的数据变更,按一定机制同步到一个或多个从库(Slave/Replica)上。
主库负责写入,从库负责同步数据,并常用于查询分担、备份、容灾和业务扩展。

从业务视角看,主从复制的核心价值主要有三点:
读写分离:主库负责写操作,从库负责读操作,提高系统吞吐量。
高可用:从库可以在主库故障时快速切换,保证业务连续性。
备份:从库可作为冷备份或热备份,减少对主库性能影响。
MySQL主从架构
MySQL主从架构并非只有一种,常见模式如下。

1. 一主一从
最基础的结构,适合开发测试、小型系统或单点读扩展需求。
优点是架构简单、部署方便;缺点是扩展能力有限。
2. 一主多从
这是最常见的生产结构。
主库负责写入,多个从库分担读请求,既提高了查询能力,也增强了数据冗余能力。
3. 主主复制
两个MySQL实例互为主从,双方都可写入。
该架构看似灵活,但冲突处理复杂,容易产生数据不一致问题,因此一般不建议在业务系统中盲目使用。
MySQL主从原理
MySQL复制的本质,是主库把数据变更记录到二进制日志(Binlog),从库再根据这些日志重放相同操作。
整体,流程如下:

1. 主库写Binlog
当主库执行增删改等数据变更操作时,会先将操作记录到Binlog中。
Binlog是MySQL用于记录数据库级变更的日志文件,是复制的基础。
2. 从库拉取日志
从库启动一个IO线程,连接主库的复制账号,持续拉取主库Binlog内容,并写入本地的Relay Log(中继日志)。
3. 从库重放日志
从库的SQL线程读取Relay Log中的事件,并在本地执行对应SQL,从而使数据与主库保持一致。