MySQL主从同步详解(架构+原理+流程)

MySQL是大型架构核心,下面我详解MySQL主从@mikechen

MySQL主从

MySQL主从是高可用、读写分离、数据备份与扩展能力建设中的核心技术。

MySQL主从,指的是将主库(Master)上的数据变更,按一定机制同步到一个或多个从库(Slave/Replica)上。

主库负责写入,从库负责同步数据,并常用于查询分担、备份、容灾和业务扩展。

MySQL主从同步详解(架构+原理+流程)-mikechen

从业务视角看,主从复制的核心价值主要有三点:

 

读写分离:主库负责写操作,从库负责读操作,提高系统吞吐量。

高可用:从库可以在主库故障时快速切换,保证业务连续性。

备份:从库可作为冷备份或热备份,减少对主库性能影响。

 

MySQL主从架构

MySQL主从架构并非只有一种,常见模式如下。

MySQL主从同步详解(架构+原理+流程)-mikechen

1. 一主一从

最基础的结构,适合开发测试、小型系统或单点读扩展需求。

优点是架构简单、部署方便;缺点是扩展能力有限。

2. 一主多从

这是最常见的生产结构。

主库负责写入,多个从库分担读请求,既提高了查询能力,也增强了数据冗余能力。

3. 主主复制

两个MySQL实例互为主从,双方都可写入。

该架构看似灵活,但冲突处理复杂,容易产生数据不一致问题,因此一般不建议在业务系统中盲目使用。

 

MySQL主从原理

MySQL复制的本质,是主库把数据变更记录到二进制日志(Binlog),从库再根据这些日志重放相同操作。

整体,流程如下:

MySQL主从同步详解(架构+原理+流程)-mikechen

1. 主库写Binlog

当主库执行增删改等数据变更操作时,会先将操作记录到Binlog中。

Binlog是MySQL用于记录数据库级变更的日志文件,是复制的基础。

2. 从库拉取日志

从库启动一个IO线程,连接主库的复制账号,持续拉取主库Binlog内容,并写入本地的Relay Log(中继日志)。

3. 从库重放日志

从库的SQL线程读取Relay Log中的事件,并在本地执行对应SQL,从而使数据与主库保持一致。

评论交流
    说说你的看法