主从模式
适用场景
MySQL 主从模式(Master-Slave Replication)是指数据可以从一个MySQL数据库服务器主节点复制到一个或者多个从节点的数据库架构模式。
1. 读写分离
主节点负责处理写操作(INSERT、UPDATE、DELETE等),而从节点可以分担读操作(SELECT)的负载。这种架构特别适用于读多写少的应用场景。
2. 数据备份
从节点可以作为主节点的实时数据备份,当主节点出现故障时,可以快速切换到从节点继续提供服务。
3. 数据分析
可以在不影响主库性能的情况下,使用从库进行数据分析和大数据处理。
4. 高可用性
通过配置多个从节点,可以构建高可用性系统架构。
主要用途
1. 实时灾备(高可用性保障)
- 故障自动切换机制:当主库出现故障时,可以快速将业务切换到从库继续提供服务,实现业务连续性
2. 读写分离(读性能扩展)
- 负载均衡:将读请求分发到多个从库,减轻主库压力
3. 数据备份(业务无感知备份)
- 备份优势:不影响主库性能、备份时间灵活、备份一致性
必要条件
主从部署必要条件:
-
网络连接要求
- 从库服务器必须能够通过TCP/IP协议访问主库服务器
- 防火墙需要开放MySQL服务端口(默认3306)
-
主库配置要求
- 必须启用二进制日志(binlog)
- 需要创建具有复制权限的用户
-
服务器标识要求
- 每台MySQL服务器必须有唯一的server-id
实现原理
主从复制
主从复制是MySQL数据库实现数据同步的核心机制,其整体工作流程可分为以下三个关键步骤:
-
主库Binlog日志记录阶段
- 主库(Master)在执行任何会修改数据的操作时,会将这些变更事件按照顺序记录到二进制日志(Binary Log,简称Binlog)中
-
从库Relay Log写入阶段
- 从库(Slave)的I/O Thread会建立与主库的连接,定期轮询请求新的binlog事件
- 从库I/O Thread接收到数据后,会将这些变更事件写入到本地的中继日志(Relay Log)中
-
从库数据重放阶段
- 从库的SQL Thread会实时监控Relay Log的变化
- 解析Relay Log中的事件内容,按照事务顺序在从库上执行相同的SQL语句
核心线程功能说明
| 线程名称 | 所属服务器 | 主要职责 |
|---|---|---|
| Binlog Dump Thread | Master | 读取binlog内容并发送给从库 |
| I/O Thread | Slave | 接收主库binlog并写入Relay Log |
| SQL Thread | Slave | 解析执行Relay Log中的事件 |
半同步复制
半同步复制(Semi-Synchronous Replication)是 MySQL 提供的一种介于异步复制和完全同步复制之间的复制机制。
背景与原理
在传统的异步复制模式下,主库执行完事务后立即返回给客户端,而不关心从库是否已经接收并应用了这些变更。
半同步复制通过引入 ACK 确认机制来解决这个问题:
- 主库执行事务并写入二进制日志(binlog)
- 主库等待至少一个从库确认已接收并写入中继日志(relay log)
- 收到确认后,主库才完成事务提交并返回客户端响应
- 如果超时未收到确认,会自动降级为异步复制模式
事务写入与复制流程
在启用半同步复制的情况下,主库事务写入的完整过程如下:
-
InnoDB Redo File Write(Prepare Write)
- 事务开始,写入 redo log(prepare 状态)
-
Binlog File Flush & Sync to Binlog File
- 生成 binlog 事件并刷盘
-
等待从库确认(半同步关键步骤)
- 主库发送 binlog 给从库
- 等待从库返回 ACK 确认
-
InnoDB Redo File Commit(Commit Write)
- 收到从库确认后,提交 redo log(commit 状态)
-
返回客户端响应
- 向应用程序返回事务执行结果
应用场景与配置建议
典型应用场景:
- 金融交易系统
- 订单支付系统
- 其他对数据一致性要求较高的业务
配置建议:
# 主库配置
plugin-load = "rpl_semi_sync_master=semisync_master.so"
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 10000 # 10秒超时
# 从库配置
plugin-load = "rpl_semi_sync_slave=semisync_slave.so"
rpl_semi_sync_slave_enabled = 1
“主从复制是MySQL数据库实现数据同步的核心机制。”
- 微服务架构、容器编排
数据高可用
- 数据库集群方案
扩展性
增加从库
- 搭建数据库复制环境
分库分表
- 垂直拆分
- 水平拆分
一致性设计
同步延迟监控
- 主从延迟时间
- 复制线程状态
- 网络延迟
主从模式概述
核心特点
- 角色划分明确
- 数据同步机制
- 故障处理
优缺点
优点:
- 提高系统可用性
- 提升读性能
- 实现数据冗余
缺点:
- 数据一致性难以保证
- 主节点可能成为性能瓶颈