第七篇:MySQL 高可用架构与主从复制实战
在生产环境中,MySQL 的高可用性是保障业务持续运行的关键。通过主从复制、多主架构、读写分离等手段,可以有效提升系统的容错能力和扩展能力。
一、为什么需要高可用架构?
-
故障容灾:主库故障后从库可迅速接管,减少停机时间;
-
性能扩展:读请求可分流至从库,实现读写分离;
-
数据备份:从库可用于冷备份、分析任务,减轻主库压力;
-
弹性伸缩:根据业务需求灵活扩容数据库节点。
二、MySQL 主从复制基础
1. 复制原理
MySQL 主从复制过程可分为以下三个阶段:
| 阶段 | 描述 |
|---|---|
| 1️⃣ 写入 Binary Log | 主库记录数据变更到 binlog 日志 |
| 2️⃣ 传输 Relay Log | 从库通过 I/O 线程从主库读取 binlog 写入本地 relay log |
| 3️⃣ 应用日志 | 从库 SQL 线程读取 relay log 并执行,达到主库一致状态 |
2. 复制方式
-
异步复制(默认):主库不关心从库是否接收成功;
-
半同步复制:主库在收到至少一个从库确认后才提交;
-
组复制(Group Replication):多主复制 + 高一致性保障。
三、配置 MySQL 主从复制(异步)
环境说明:
| 主机名 | IP | MySQL 实例 |
|---|---|---|
| 主库 | 192.168.1.10 | 3306 |
| 从库 | 192.168.1.11 | 3306 |
步骤如下:
1. 主库配置
# /etc/my.cnf
server-id = 1
log-bin = mysql-bin
binlog_format = ROW
-- 创建复制账号
CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'replpass';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
FLUSH PRIVILEGES;
-- 查看当前 binlog 文件与位置
SHOW MASTER STATUS;
2. 从库配置
# /etc/my.cnf server-id = 2 relay-log = relay-log read_only = 1
-- 配置主从关系
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='replpass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=154;
-- 启动复制
START SLAVE;
-- 查看状态
SHOW SLAVE STATUS\G
状态关键字段:
| 字段名称 | 含义 |
|---|---|
| Slave_IO_Running | I/O 线程是否正常(YES) |
| Slave_SQL_Running | SQL 线程是否正常(YES) |
| Seconds_Behind_Master | 与主库延迟秒数(越小越好) |
四、主从切换与故障转移
1. 手动切换流程:
-
停止主库写入;
-
检查从库同步状态;
-
将从库提升为主库(STOP SLAVE、RESET SLAVE、CHANGE MASTER TO);
-
修改客户端连接配置。
2. 自动故障转移工具:
| 工具 | 特点 |
|---|---|
| MHA | 成熟稳定,适用于异步复制环境 |
| Orchestrator | 可视化管理拓扑,自动 failover |
| MySQL Router | 配合 InnoDB Cluster 自动路由读写请求 |
五、读写分离架构
常见架构图:
客户端 │ ├── 写 → 主库 └── 读 → 从库1/从库2
实现方式:
-
应用层路由(手动连接不同库);
-
中间件实现(推荐):
| 中间件 | 描述 |
|---|---|
| MyCat | 开源中间件,支持读写分离、分库分表 |
| Atlas | 360 开源,轻量级 |
| ProxySQL | 商业级中间件,功能丰富,性能优秀 |
六、高可用集群架构方案
1. InnoDB Cluster(MySQL 官方)
-
组件:MySQL Server + Group Replication + MySQL Router + Shell;
-
特点:自动主选举、强一致性、支持读写分离。
2. MGR + Keepalived + VIP
-
主节点绑定 VIP(虚拟 IP);
-
从节点故障接管 VIP;
-
配合脚本或工具检测主库存活性。
七、维护建议与实战技巧
-
定期检查复制延迟;
-
主从版本保持一致,避免兼容性问题;
-
设置
read_only=1避免从库写入; -
监控 binlog 体积与磁盘使用;
-
在数据同步前使用
mysqldump或xtrabackup完成初始化。
总结
-
主从复制是 MySQL 高可用架构的核心;
-
异步复制适合读多写少的业务场景;
-
多从库可构建读写分离集群,提升性能;
-
配合中间件与监控系统可实现自动化运维。
更多推荐
所有评论(0)