【IT老齐016】MySQL高可用MHA架构方案
【IT老齐016】MySQL高可用MHA架构方案
MHA是日本程序员yoshinorim开发的MySQL高可用方案
采用Perl语言开发
MHA是最成熟MySQL高可用方案
场景:主服务器挂了,从服务器不会切换到主服务器,从而引出高可用MHA方案 。
MHA故障发现与转移
故障发现
- 启动:前置检查
- 运行过程中认定需要进行故障转移
- manger每3秒向主节点发送select 1 的SQL语句,判断主节点是否执行。3次ping无反应,认定master异常
- 避免网络导致的无法ping通,manger让从属服务器MHA node尝试SSH登录检查,若所有node连接不上,从而认定,开始故障转移。
故障转移
- 切断外界链接(断开虚拟IP跟怀疑挂掉的主机链接),主从同步也断开
- manager使用SSH拉取备份服务器的binlog(复制保存到manager)
- 由于binlog跟从服务器的relaylog的数据可能存在不一致,从而进入转移,使得数据保持一致。
- 从属服务器之间进行比对,node会检查relaylog哪个是最新的,向其他节点发送差异数据并应用。
- 这时从属服务器的relaylog一致了,但和主服务器的binlog还可能不一致。这时将旧的master binlog差异的数据发送到从属服务器上并应用。
- 确认主服务器
- manger指定主服务器
- 比较节点的日志最新
- 按注册实例列表向后选择(manger中对sql有记录)
- 确定谁是主后,从服务器通过changer master命令完成主从链接。
- 将原虚拟IP指向新的主服务器
- 当旧的主服务器恢复正常,作为从服务器和新的主服务器进行同步(MHA自动完成)
细节问题
1、binlog不完整
2、迁移丢包,数据不完整
3、旧主服务器跟binlog日志不一致
优缺点
优点
- 由per语言开发的开源工具
- 可以支持基于GTID的复制模式
- 当主DB不可用时,从多个从服务器中选举出来新的主DB
- 提供了主从切换和故障转移功能,在线故障转移时不易丢失数据
- 同一个监控节点可以监控多个集群
缺点
- 需要编写脚本或利用第三方工具来实现VIP的配置
- MHA启动后只只监控主服务器是否可用,没办法监控从服务器
- 需要基于SSH免认证登陆配置,存在一定的安全隐患
- 没有提供从服务器的读负载均衡功能
拓展
- manager挂了怎么办
- manager是双机热备,不过manager始终只有一个提供服务,另一个备份节点只有当主manager挂了以后才会顶上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!