在生产环境中,MySQL 的高可用性是保障业务持续运行的关键。通过主从复制、多主架构、读写分离等手段,可以有效提升系统的容错能力和扩展能力。

一、为什么需要高可用架构?

  • 故障容灾:主库故障后从库可迅速接管,减少停机时间;

  • 性能扩展:读请求可分流至从库,实现读写分离;

  • 数据备份:从库可用于冷备份、分析任务,减轻主库压力;

  • 弹性伸缩:根据业务需求灵活扩容数据库节点。

 二、MySQL 主从复制基础

1. 复制原理

MySQL 主从复制过程可分为以下三个阶段:

阶段描述
1️⃣ 写入 Binary Log主库记录数据变更到 binlog 日志
2️⃣ 传输 Relay Log从库通过 I/O 线程从主库读取 binlog 写入本地 relay log
3️⃣ 应用日志从库 SQL 线程读取 relay log 并执行,达到主库一致状态

2. 复制方式

  • 异步复制(默认):主库不关心从库是否接收成功;

  • 半同步复制:主库在收到至少一个从库确认后才提交;

  • 组复制(Group Replication):多主复制 + 高一致性保障。

 三、配置 MySQL 主从复制(异步)

环境说明:

主机名IPMySQL 实例
主库192.168.1.103306
从库192.168.1.113306

步骤如下:

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_RunningI/O 线程是否正常(YES)
Slave_SQL_RunningSQL 线程是否正常(YES)
Seconds_Behind_Master与主库延迟秒数(越小越好)

四、主从切换与故障转移

1. 手动切换流程:

  • 停止主库写入;

  • 检查从库同步状态;

  • 将从库提升为主库(STOP SLAVE、RESET SLAVE、CHANGE MASTER TO);

  • 修改客户端连接配置。

2. 自动故障转移工具:

工具特点
MHA成熟稳定,适用于异步复制环境
Orchestrator可视化管理拓扑,自动 failover
MySQL Router配合 InnoDB Cluster 自动路由读写请求

五、读写分离架构

常见架构图:

客户端 │ ├── 写 → 主库 └── 读 → 从库1/从库2

实现方式:

  1. 应用层路由(手动连接不同库);

  2. 中间件实现(推荐):

中间件描述
MyCat开源中间件,支持读写分离、分库分表
Atlas360 开源,轻量级
ProxySQL商业级中间件,功能丰富,性能优秀

六、高可用集群架构方案

1. InnoDB Cluster(MySQL 官方)

  • 组件:MySQL Server + Group Replication + MySQL Router + Shell;

  • 特点:自动主选举、强一致性、支持读写分离。

2. MGR + Keepalived + VIP

  • 主节点绑定 VIP(虚拟 IP);

  • 从节点故障接管 VIP;

  • 配合脚本或工具检测主库存活性。

七、维护建议与实战技巧

  • 定期检查复制延迟;

  • 主从版本保持一致,避免兼容性问题;

  • 设置 read_only=1 避免从库写入;

  • 监控 binlog 体积与磁盘使用;

  • 在数据同步前使用 mysqldumpxtrabackup 完成初始化。

总结

  • 主从复制是 MySQL 高可用架构的核心;

  • 异步复制适合读多写少的业务场景;

  • 多从库可构建读写分离集群,提升性能;

  • 配合中间件与监控系统可实现自动化运维。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐