什么是 MySQL 的主从同步机制?它是如何实现的?
2025-05-18 08:48 阅读(49)

MySQL 主从同步机制详解

什么是 MySQL 主从同步?

MySQL 的主从同步机制是一种数据复制技术,用于将主数据库(Master)上的数据同步到一个或多个从数据库(Slave)中。这种机制主要解决了数据库的高可用性、读写分离、负载均衡和数据备份等问题。


主从同步的实现原理

MySQL 主从同步主要通过 二进制日志(Binary Log,简称 binlog) 实现数据的复制。具体流程如下:


主库操作:


主库接受事务请求并执行数据更新

将变更操作记录到 binlog 中

通过 binlog dump 线程将变更事件推送给从库



从库操作:


I/O 线程接收主库的 binlog 变更事件并写入 relay log(中继日志)

SQL 线程从 relay log 中读取事件并重放执行,更新从库数据

一句话概括:主库提交事务会写 binlog,由 dump 线程监听 binlog 变更并推送更新事件给从库,从库通过 I/O 线程写入 relay log,再由 SQL 线程重放更新数据。




主从复制的三种类型

1. 异步复制(默认模式)

特点:


主库不需要等待从库的响应

性能最高,但数据一致性最低

有数据丢失风险(如主库在数据未同步到从库时宕机)



流程:


主库接受事务请求

更新数据并写入 binlog

立即给客户端响应

异步推送 binlog 变更到从库


2. 同步复制

特点:


主库需要等待所有从库确认收到数据

数据一致性最高,但性能最差

实际生产环境很少使用


3. 半同步复制(MySQL 5.7+)

特点:


主库等待至少一个从库确认收到数据

性能和一致性达到较好平衡

可配置参数控制需要确认的从库数量


并行复制技术

为了解决从库单线程复制导致的延迟问题,MySQL 引入了并行复制技术:

1. MySQL 5.6 基于库级别的并行复制


不同数据库的事务可以并行执行

局限性:单数据库负载高时效果有限


2. MySQL 5.7 基于组提交的并行复制


同一组提交的事务可以并行执行

引入了两个重要参数:


binlog_group_commit_sync_delay:组提交等待延迟

binlog_group_commit_sync_no_delay_count:最大事务数量




3. MySQL 8.0 基于 WriteSet 的并行复制


通过分析事务修改的数据行判断冲突

无冲突的事务可以并行执行

不依赖主库的事务提交方式,效率更高


总结

MySQL 主从同步机制通过 binlog 实现了数据的复制,提供了异步、同步和半同步三种复制方式以满足不同场景需求。随着版本演进,MySQL 不断优化并行复制技术,从库级别的并行发展到行级别的并行,显著提高了复制效率和降低了主从延迟。在实际应用中,需要根据业务对数据一致性和性能的要求,选择合适的复制方式和配置参数。


作者:超爱吃士力架

链接:https://juejin.cn


https://www.zuocode.com