MySQL是大型架构的核心,下面我重点详解MySQL主从@mikechen
MySQL主从
MySQL主从(Master–Slave Replication),是数据库高可用、与读写分离的重要手段。
通过将事务在主库(Master)上执行的变更,复制到一个或多个从库(Slave)。
既能提高系统的读吞吐量,又能实现备份与灾难恢复。
MySQL主从原理
主从复制的核心,在于 二进制日志(binlog)机制。
主库将所有导致数据变更的操作,记录到二进制日志文件。
从库作为复制线程连接到主库,读取并回放这些二进制日志,从而使从库的数据状态与主库保持同步。
如下图所示:
比如:主库把所有更改操作(INSERT、UPDATE、DELETE 等)记录到 binlog 文件中。
从库则通过读取并重放这些日志,实现数据同步。
整个过程可以分为 三步:
1️⃣ 主库记录日志
主库执行写操作后,将变更写入 binlog。
2️⃣ 从库拉取日志
从库的 I/O 线程 连接主库,读取 binlog 内容,并写入 中继日志(relay log)。
3️⃣ 从库重放日志
从库的 SQL 线程 读取 relay log,并在本地执行相同的 SQL,达到同步目的。
MySQL 主从模式
MySQL 主从复制有三种可靠性模式,对应不同业务需求。
1️⃣ 异步复制(Asynchronous)
主库执行事务后立即返回,不等待从库;
这是,默认模式;
优点:性能高;
缺点:主库崩溃可能导致数据丢失。
2️⃣ 半同步复制(Semi-synchronous)
主库在提交事务后,需等待至少一个从库确认接收 binlog;
减少数据丢失风险;
适用于对一致性要求较高的系统。
3️⃣ 全同步复制(Fully Synchronous)
主库需等待所有从库确认;
数据一致性最高;
性能开销大,一般不用于生产。