阿里面试:MySQL主从同步方案有哪些?优劣势比较过?

MySQL是大厂考察涉及的,下面我详解MySQL主从同步@mikechen

异步复制(基于 Binlog)

主库执行完事务后立即返回给客户端,不等从库,从库异步从 binlog 获取并应用日志。

阿里面试:MySQL主从同步方案有哪些?优劣势比较过?-mikechen

优点:

性能最好,主库事务提交快、延迟最小,吞吐高。

配置简单,是 MySQL 默认的主从复制方式。

缺点:

主从数据不一致窗口大,主库若宕机可能丢失尚未同步到从库的数据。

从库延迟(lag)常见,高并发下可能导致“读后不一致”。

适合:对一致性要求不高,但对性能/写延迟敏感的业务(如日志、报表、一般读多写少场景)。

 

半同步复制

在主库提交事务后,至少等待一个从库确认已接收到。

阿里面试:MySQL主从同步方案有哪些?优劣势比较过?-mikechen

并写入 relay log(或已确认接收)后才返回客户端,从而减少丢失窗口。

优势:比异步复制更安全,降低主库故障导致的数据丢失概率。

配置相对简单,适合对数据一致性有一定要求的场景。

劣势:会增加主库事务提交延迟,影响写性能。

若网络或从库不可用可能导致主库等待或降级为异步。

适合:对数据安全性要求较高,但仍可接受一定写延迟的业务,如金融、计费、核心交易。

 

全同步复制

主库必须等到所有从库都应用完事务,再提交并返回客户端。

阿里面试:MySQL主从同步方案有哪些?优劣势比较过?-mikechen

优点:

数据一致性最高,几乎零丢失,主从切换可靠性最好。

缺点:

性能极差,延迟极高,任意从库出问题,主库都会被阻塞,影响可用性。

配置复杂,运维成本高。

一般不用于主从,多见于 MGR(MySQL Group Replication)等多主/多副本方案。

适合对一致性要求极强、对写性能不敏感的场景。

评论交流
    说说你的看法