mysqldr方案通过MHA+MySQL主从复制+Keepalived实现异地容灾,支持自动故障切换与数据同步。核心架构含主节点、从节点、仲裁节点及VIP,保障RPO≈0、RTO

MySQL异地容灾的搭建核心在于数据的实时同步与故障自动切换,mysqldr 是一种基于开源工具组合实现的轻量级MySQL高可用+容灾方案。它通常结合 MHA(Master High Availability)、MySQL主从复制 和 Heartbeat或Keepalived 等技术,实现跨机房的数据保护和故障转移。下面从架构设计到关键组件逐一解析。
一、mysqldr方案基本架构
mysqldr 并非官方项目,而是社区对一套MySQL容灾方案的统称,典型结构包括:
- 主节点(Primary):位于主数据中心,负责读写流量。
- 从节点(Standby):部署在异地机房,通过异步或半同步复制同步数据。
- 仲裁/监控节点:部署在第三方位置或主从之间,用于判断网络分区和触发切换。
- 虚拟IP(VIP):由Keepalived管理,对外提供统一访问入口。
- MHA Manager:负责主库宕机时自动提升从库为主库。
这种结构支持同城双活或主备式异地容灾,适用于RPO≈0、RTO
二、核心组件配置说明
实现稳定容灾依赖以下关键技术点:
1. MySQL主从复制(推荐半同步)
- 启用 GTID 复制,便于故障切换时定位位点。
- 使用 semi-sync replication 插件(如 rpl_semi_sync_master),确保至少一个从库收到日志。
- 异地带宽有限时,可压缩复制流(binlog压缩需MySQL 8.0+)。
2. MHA 实现自动主从切换
- MHA Manager 定期检测主库状态,发现宕机后自动选择最新数据的从库提升为主。
- 支持在线切换(master switch)和故障切换(failover)。
- 切换过程中自动修复其他从库指向新主库,减少人工干预。
3. Keepalived 管理虚拟IP
- 主节点运行Keepalived并持有VIP。
- 当主库宕机或MHA完成切换后,VIP漂移到新主库所在服务器。
- 应用通过VIP连接数据库,无需修改配置。
4. 数据一致性校验与恢复机制
- 定期使用 pt-table-checksum 校验主从数据一致性。
- 异常切换后用 pt-table-sync 自动修复差异表。
- 建议开启 relay_log_purge=0,保留中继日志用于恢复。
三、异地部署注意事项
跨机房环境带来额外挑战,需特别关注:
- 网络延迟:异地RTT通常较高,建议采用半同步模式但设置超时回退到异步(rpl_semi_sync_master_timeout > 0)。
- 脑裂风险:主从间网络中断可能导致双主,引入仲裁节点或脚本判断多数派存活。
- 备份策略:每日全量备份 + binlog归档,异地保存,支持时间点恢复(PITR)。
- 监控告警:监控复制延迟、MHA状态、VIP归属、磁盘空间等关键指标。
四、简易部署流程示例
以两中心一仲裁为例:
- 配置主从复制(主在北京,从在上海),启用GTID和半同步。
- 部署MHA Manager在第三地(或本地备用机),配置node和manager权限。
- 各数据库节点安装Keepalived,主优先级高,从为backup。
- 编写MHA调用Keepalived的切换脚本,实现VIP迁移。
- 测试主库宕机场景,验证自动切换时间和数据一致性。
基本上就这些。mysqldr方案成本低、成熟度高,适合中小型企业构建异地容灾体系。关键是把复制稳定性、切换可靠性和数据一致性控制好。不复杂但容易忽略细节。










