如何实现Mysql架构中的主从切换,高可用架构的神器MHA!
2021/11/2 19:09:39
本文主要是介绍如何实现Mysql架构中的主从切换,高可用架构的神器MHA!,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
数据库切换了,业务之前一直连接的都是主库,怎么让业务连接备库呢?
- 业务切换到新的地址,也就是业务应用配置文件修改一下新的主库
- 使用内部dns,通过域名连接,一般公司都用CoreDNS框架搭建内部的映射,有对应的域名配置对应的IP解析,所以改的话只改域名映射配置就可以了。这样的好处是项目的配置文件永远不需要改配置文件,只需要改DNS服务器的配置
- 使用keeppalived进行自动VIP漂移,也就是相当于心跳检测mysql服务器是否挂掉,它会自动切换保证随时有新的顶上去,也就自动实现了主从切换;也可以自动执行切换脚本,比如检测出主库挂了,不仅仅可以漂移VIP,也可以自动执行一个脚本,这个脚本是可以自定义,实现想要的功能,比如实现主只读,把备库可以写等等。
- 使用代理,如HaProxy
- MHA,高可用首选!结合DBLE可以实现负载!
MHA
MHA支持GTID,可以在binlog来不及传送时会尝试登录主库传送binlog到从库。当主库还没来得及把binlog传送给从库的时候,MHA会登录主库把没传送的binlog传送出去,但MHA不支持想keepalived一样漂移VIP,但是配合DBLE就可以了。
原理
MHA支持GTID,可以在binlog来不及传送时会尝试登录主库传送binlog到从库。当主库还没来得及把binlog传送给从库的时候,MHA会登录主库把没传送的binlog传送出去,但MHA不支持想keepalived一样漂移VIP,但是配合DBLE就可以了。
从下图来看,一主两从,一般从生产来看,都会架设两个从库一个主库,其次MHA作为中间件的服务器,并且每个Mysql服务器都安装一个MHA组件(MHA node脚本)
假如mysql的主库挂了,这个时候从库连接不上主库,MHA会登录Mysql主库抢救为传送出来的binlog,也就完成了第一步。有人好奇了,假如开了binlog的半同步复制的话,是不是就没有未传送的binlog,理论上至少是这样,但是binlog传送过长可能会中断变成异步binlog传送,如果用主库宕机了,手动切换,很可能抢救不了主库遗留的binlog,但是binlog还没有复制到从库。
等待从库执行中继日志追赶master,也就是MHA使用的是可靠性策略,追上之后然后 MHA会在从库执行从主库抢救出来的binlog,那么保证了主从的一致,完成了第二步。
然后提升一个从库为主库,这时候另一个从库会从一个新提升的主库复制数据,到这一步MHA的工作就完成了,可以退休了。
这个时候MHA就完成了一波周期工作,接下来还需要人工修复,把之前宕机的主库改为从库,等待下一波的容灾。
这篇关于如何实现Mysql架构中的主从切换,高可用架构的神器MHA!的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-20MySQL集群部署教程:入门级详解
- 2024-11-20MySQL集群教程:入门与实践指南
- 2024-11-20部署MySQL集群教程:新手入门指南
- 2024-11-20MySQL读写分离教程:轻松入门
- 2024-11-20部署MySQL集群入门:一步一步搭建你的数据库集群
- 2024-11-19部署MySQL集群学习:入门教程
- 2024-11-19如何部署MySQL集群:新手入门教程
- 2024-11-19Mysql安装教程:新手必看的详细安装指南
- 2024-11-18Mysql安装入门:新手必读指南
- 2024-11-18MySQL事务MVCC原理入门详解