加入收藏 | 设为首页 | 会员中心 | 我要投稿 拼字网 - 核心网 (https://www.hexinwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MHA调研与应用的示例分剖析

发布时间:2021-12-25 10:11:44 所属栏目:MySql教程 来源:互联网
导读:小编给大家分享一下MHA调研与应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! MHA调研与应用 一、问题与需求 1.1、问题汇总 1、没有工具来快速切换集群主库,
小编给大家分享一下MHA调研与应用的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
 
MHA调研与应用
一、问题与需求
1.1、问题汇总
1、没有工具来快速切换集群主库,如果切换主库,需要DBA手动修改从库指向,修改元信息等
 
2、需要能快速上线,不影响当前架构
 
3、需要全部自动化处理,方便DBA使用,例如检查,操作,展示等
 
二、MHA介绍
2.1、什么是MHA
MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。
 
在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
 
 
2.2、MHA原理
phase 1: Configuration Check Phase..
 
        mha will check the mha default file,then it can get the status of all mysql nodes and the relationship between them, who is master ,who is slave and who is dead ,who is alive.
 
Phase 2: Dead Master Shutdown Phase
 
       使用master_ip_failover_scirpt和shutdown script  to  shutdown or inactive the dead master ,(sush as  IP  or DNS switching,which was  defined in a self-defined script in advance ,just in case of split-brain) and I tend to use python.
 
      (执行master_ip_failover_script --command=stopssh 使原主库IP 失效;执行SHUTDOWN script --command=stopssh,关闭原主库)
 
Phase 3: Master Recovery Phase
 
     3.1 比较所有从库的bin log的pos点,找出latest binlog file&pos和oldest file&pos
 
     3.2 尝试去原主库上获取binlog
 
     3.3 根据no_master、candidate_master和各从库延迟情况,选出新主库;获取新主库的日志缺失情况
 
     3.4 给新选出来的主库补日志,并激活新主库。 (生成change master to语句)
 
Phase 4: Slaves Recovery Phase
 
     4.1 给从库补日志:从主库上补日志,或者,从lastest从库上给其他从库补日志
 
     4.2  execute "change master to" command in all avaiable slaves , which is generated in former steps
 
Phase 5: New master cleanup
 
2.3、MHA优势
1、不影响服务器性能,易安装,不改变现有部署
 
2、故障切换(实现自动故障检测和故障转移,通常在30秒以内;)
 
3、数据一致性保证
 
2.4、mha模式
按节点分为:manage/node模式,即MHA管理机器与集群node节点
 
按切换分为:online/failover模式切换,即在线切换与主库损坏切换
 
2.5、MHA要求
1、最少一主一从
2、ssh互信
 
3、mysql账号
 
4、linux系统
 
5、mysql版本5.0及以后
 
6、mysqlbinlog必须是3.3及以上版本
 
7、log-bin必须在每一个可称为master的mysql服务器上设置
 
8、所有mysql服务器的复制过滤规则必须一致
 
9、 必须在能成为master的服务器上设置复制账户
 
10、基于语句的复制时,不要使用load datainfile命令
 
11、关闭relay_log_purge,需要脚本/手动定期清理(清理方式:set global relay_log_purge=1;flush logs;)
 
2.6、MHA版本选择
 
从MHA的0.56版本开始,也支持基于GTID的故障切换。MHA会自动检测mysqld是否在GTID运行,如果GTID开启,MHA就实现带GTID的故障切换,如果没有启用,MHA就使用基于relay log的故障切换。
 
2.7、重要参数
 
ignore_fail=1                忽略报错
 
candidate_master=1    1:优先成为master 0:不优先
 
no_master=1               1:不能成为master  0:可以成为master

(编辑:拼字网 - 核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!