高可用MHA

MySQL高可用

  • MHA:Master High Availability,对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从 官网:https://code.google.com/archive/p/mysql-master-ha/
  • Galera Cluster:wsrep(MySQL extended with the Write Set Replication)通过wsrep协议在全局实现复制;任何一节点都可读写,不需要主从复制,实现多主读写
  • GR(Group Replication):MySQL官方提供的组复制技术(MySQL 5.7.17引入的技术),基于原生复制技术Paxos算法

MHA集群架构

Manager—-Master High Availability、M—-master、S—-slave
notion image
主从同步,从节点某一个节点同步的是最多的(I2),较前的二进制未同步的(X),其他从节点,只是将日志复制过来,并没有执行完成,在中继日志中还未执行完(I1)
notion image

MHA工作原理

1、从宕机崩溃的master保存二进制日志事件(binlog events) 2、识别含有最新更新的slave 3、应用差异的中继日志(relay log)到其他的slave 4、应用从master保存的二进制日志事件(binlog events) 5、提升一个slave为新的master 6、使其他的slave连接新的master进行复制

MHA

  • MHA软件由两部分组成,Manager工具包和Node工具包
  • Manager工具包主要包括以下几个工具:
    • masterha\_check\_ssh 检查MHA的SSH配置状况
    • masterha\_check\_repl 检查MySQL复制状况
    • masterha\_manger 启动MHA
    • masterha\_check\_status 检测当前MHA运行状态
    • masterha\_master\_monitor 检测master是否宕机
    • masterha\_master\_switch 故障转移(自动或手动)
    • masterha\_conf\_host 添加或删除配置的server信息
  • Node工具包:这些工具通常由MHA Manager的脚本触发,无需人为操作)主 要包括以下几个工具:
  • save\_binary\_logs 保存和复制master的二进制日志
  • apply\_diff\_relay\_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
  • filter\_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用此工具)
  • purge\_relay\_logs 清除中继日志(不会阻塞SQL线程)
注意:为了尽可能的减少主库硬件损坏宕机造成的数据丢失,因此在配置MHA的同时建议配置成MySQL 5.5的半同步复制
  • 自定义扩展:
  • secondary\_check\_script: 通过多条网络路由检测master的可用性
  • master\_ip\_ailover\_script: 更新Application使用的masterip
  • shutdown\_script:强制关闭master节点
  • report\_script:发送报告
  • init\_conf\_load\_script:加载初始配置参数
  • master\_ip\_online\_change\_script:更新master节点ip地址
  • 配置文件: global配置,为各application提供默认配置 application配置:为每个主从复制集群
  • 在管理节点上安装两个包: mha4mysql-manager mha4mysql-node
  • 在被管理节点安装: mha4mysql-node

实现MHA

4台机器 A主、B从、C从、D-MHA,当A宕机时,由MHA控制B从节点提升为主节点
实现Master
实现slave
在所有节点实现相互之间ssh key验证
Mha验证和启动
排错日志: /data/mastermha/app1/manager.log

补充

1、此软件比较旧,若主节点宕机了,可实现自动化从节点变成主节点 2、关于主节节点宕机,新增或恢复也需要考虑下 3、mha是运行在前台,可考虑放入后台运行

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 438803792@qq.com
Loading...