ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

如何实现Mysql架构中的主从切换,高可用架构的神器MHA!

2021-11-02 19:00:39  阅读:237  来源: 互联网

标签:主库 binlog 传送 架构 MHA 切换 Mysql 从库


数据库切换了,业务之前一直连接的都是主库,怎么让业务连接备库呢?

  1. 业务切换到新的地址,也就是业务应用配置文件修改一下新的主库
  2. 使用内部dns,通过域名连接,一般公司都用CoreDNS框架搭建内部的映射,有对应的域名配置对应的IP解析,所以改的话只改域名映射配置就可以了。这样的好处是项目的配置文件永远不需要改配置文件,只需要改DNS服务器的配置
  3. 使用keeppalived进行自动VIP漂移,也就是相当于心跳检测mysql服务器是否挂掉,它会自动切换保证随时有新的顶上去,也就自动实现了主从切换;也可以自动执行切换脚本,比如检测出主库挂了,不仅仅可以漂移VIP,也可以自动执行一个脚本,这个脚本是可以自定义,实现想要的功能,比如实现主只读,把备库可以写等等。
  4. 使用代理,如HaProxy
  5. 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就完成了一波周期工作,接下来还需要人工修复,把之前宕机的主库改为从库,等待下一波的容灾。

 

标签:主库,binlog,传送,架构,MHA,切换,Mysql,从库
来源: https://www.cnblogs.com/wt645631686/p/15500475.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有