MySQL 高可用方案
面试官问:"MySQL 高可用怎么做的?"
小张说:"我们用了主从复制。"
面试官追问:"主库挂了怎么办?"
小张说:"...手动切换?"
面试官继续追问:"手动切换要多久?有没有自动切换的方案?"
小张答不上来。
高可用是 MySQL 生产环境的必备能力。主从复制的切换时间可能从几分钟到几十分钟,在业务高峰期这是不可接受的。这道题考的是候选人对 MySQL 高可用架构的理解深度。
一、高可用方案概览 🔴
1.1 常见方案对比
1.2 高可用的衡量指标
二、Keepalived + 双主架构 🟡
2.1 架构原理
原理:
- 两台 MySQL 配置为双主复制(互相同步)
- Keepalived 绑定 VIP
- Master1 故障时,VIP 漂移到 Master2
- 应用连接到 VIP,不感知切换
2.2 切换流程
2.3 缺点
- 切换时间取决于检测频率(通常 3~5 秒检测一次)
- 切换后原 Master 恢复需要手动处理
- 可能丢数据:Master1 挂了但数据还没同步到 Master2
三、MHA(Master High Availability)🟡
3.1 MHA 架构
3.2 MHA 切换流程
3.3 MHA 的优势
- 自动选新 Master:选择数据最新的从库
- 差异日志补偿:尽量减少数据丢失
- 半自动切换:可以配置为手动确认后切换
- 支持 GTID:配合 GTID 复制更可靠
四、MGR(MySQL Group Replication)🟢
4.1 MGR 原理
核心原理:
- 基于 Paxos 协议实现分布式一致性
- 多节点组成复制组
- 所有写操作在组内广播,经多数节点确认后提交
- 强一致性:数据不会丢失
4.2 MGR vs MHA
五、生产选型建议 🟢
5.1 选型原则
5.2 不要忽略的问题
【面试官心理】 高可用是 MySQL 面试中的高级话题。能说清楚 MHA 和 MGR 区别、选型原则的候选人,说明他对 MySQL 生产架构有实战经验。