MySQL/MariaDB数据库MHA实现高可用实战
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.MySQL高可用常见的解决方案
1>.Multi-Master Replication Manager for MySQL(简称MMM)
Mysql主主复制管理器是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的)
博主推荐阅读:
http://www.mysql-mmm.org https://code.google.com/archive/p/mysql-master-master/downloads
2>.Master High Availability(简称MHA)
对主节点进行监控,可实现自动故障转移至其它从节点;通过提升某一从节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多从的架构,要搭建MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当master,一台充当备用master,另外一台充当从库,出于机器成本的考虑,淘宝进行了改造,目前淘宝TMHA已经支持一主一从
博主推荐阅读:
https://code.google.com/archive/p/mysql-master-ha/
3>.MySQL extended with the Write Set Replication(简称Galera Cluster:wsrep)
通过wsrep协议在全局实现复制;任何一节点都可读写,不需要主从复制,实现多主读写
4>.Group Replication(简称GR)
MySQL官方提供的组复制技术(MySQL 5.7.17引入的技术),基于原生复制技术Paxos算法
二.MHA概述
1>.MHA集群架构
如下图所示:
MHA是基于perl语言开发的,它需要单独部署到一台服务器上,我们称之为manager。
MHA可用监控多组主从复制集群(建议使用半同步复制),当任何一组中的master节点宕机,可用迅速该组中的slave节点提升为master,这个过程是自动切换的,无需我们手动切换。
2>.MHA选择master过程
(1)从宕机崩溃的master保存二进制日志事件(binlog events) (2)识别含有最新更新的slave (3)应用差异的中继日志(relay log)到其他的slave (4)应用从master保存的二进制日志事件(binlog events) (5)提升一个slave为新的master (6)使其他的slave连接新的master进行复制
3>.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版本及以上的半同步复制
4>.自定义扩展
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地址
5>.配置文件
global配置:
为各application提供默认配置
application配置:
为每个主从复制集群
三.MHA部署实战
1>.搭建半同步复制
博主推荐阅读: https://www.cnblogs.com/yinzhengjie/p/11828475.html 试验环境说明(搭建步骤如上所述,配置文件需要稍作修改): node102.yinzhengjie.org.cn: master节点 node103.yinzhengjie.org.cn: slave节点 node104.yinzhengjie.org.cn: MHA节点
2>.
3>.
4>.
5>.