MySQL是大厂考察涉及的,下面我详解MySQL主从同步@mikechen
异步复制(基于 Binlog)
主库执行完事务后立即返回给客户端,不等从库,从库异步从 binlog 获取并应用日志。

优点:
性能最好,主库事务提交快、延迟最小,吞吐高。
配置简单,是 MySQL 默认的主从复制方式。
缺点:
主从数据不一致窗口大,主库若宕机可能丢失尚未同步到从库的数据。
从库延迟(lag)常见,高并发下可能导致“读后不一致”。
适合:对一致性要求不高,但对性能/写延迟敏感的业务(如日志、报表、一般读多写少场景)。
半同步复制
在主库提交事务后,至少等待一个从库确认已接收到。

并写入 relay log(或已确认接收)后才返回客户端,从而减少丢失窗口。
优势:比异步复制更安全,降低主库故障导致的数据丢失概率。
配置相对简单,适合对数据一致性有一定要求的场景。
劣势:会增加主库事务提交延迟,影响写性能。
若网络或从库不可用可能导致主库等待或降级为异步。
适合:对数据安全性要求较高,但仍可接受一定写延迟的业务,如金融、计费、核心交易。
全同步复制
主库必须等到所有从库都应用完事务,再提交并返回客户端。

优点:
数据一致性最高,几乎零丢失,主从切换可靠性最好。
缺点:
性能极差,延迟极高,任意从库出问题,主库都会被阻塞,影响可用性。
配置复杂,运维成本高。
一般不用于主从,多见于 MGR(MySQL Group Replication)等多主/多副本方案。
适合对一致性要求极强、对写性能不敏感的场景。