MySQL MHA工作原理
Posted gaogao67
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL MHA工作原理相关的知识,希望对你有一定的参考价值。
MHA工作组件
MHA(Master High Availability)是一种mysql高可用解决方案,由日本DeNA公司开发,主要用于在故障切换和主从提升时进行快速切换,并最大程度保证数据一致性。
MHA主要由两部分组成:
1、MHA Manager(管理节点),管理节点部署在群集之外,主要用于定期监测群集中的主节点,并在主从切换时负责管理调度切换流程。
2、MHA Node(数据节点),数据节点部署在每个群集节点上,负责在主从切换时对比和应用差异日志。
管理节点主要包含以下工具:
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信息
数据节点主要包含以下工具:
save_binary_logs 保存和复制master的二进制日志
apply_diff_relay_logs 识别差异的中继日志事件并将其差异的事件应用于其他的slave
filter_mysqlbinlog 去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
purge_relay_logs 清除中继日志(不会阻塞SQL线程)
MHA工作原理
对于基于BINLOG位点同步的复制,使用SHOW SLAVE STATUS获取复制信息:
A) Master_Log_File+Read_Master_Log_Pos确定从库读取到主库Binlog位置 B) Relay_Log_File+Relay_Log_Pos确定从库存放主库Binlog位置 C) Relay_Master_Log_File+Exec_Master_Log_Pos确定从库执行主库Binlog位置
对于基于GTID同步的复制,使用SHOW SLAVE STATUS获取复制信息:
A) Retrieved_Gtid_Set确定从库读取到主库的BINLOG范围
B) Executed_Gtid_Set确定从库执行到主库的BINLOG范围
MHA主要特性
1、MHA切换不依赖实例使用存储引擎和BINLOG格式; 2、MHA不会增加MySQL服务器性能开销,除MHA管理节点外无需增加额外服务器; 3、在MySQL服务器上部署MHA数据节点不会影响当前实例运行; 4、MHA实现自动故障切换,也可以手动触发在线切换; 5、MHA可以实现秒级的故障切换; 6、MHA可以将任意slave提升master,也可以在切换时指定master候选节点; 7、MHA提供扩展接口,允许在MHA切换过程中的特定时间点执行用户自定义脚本。
MHA可扩展性
A)seconary_check_script
当检测到master节点连接失败时调用,从多个网络路径判断master是否发生宕机。
B)shutdown_script
在故障转移前调用,可以通过SSH登录到master节点进行数据库关闭和服务器关机等操作。
C)master_ip_failover_script
在故障转移前和转移到新master节点后调用,用于切换群集使用的VIP或域名或其他操作。
D)report_script
在故障切换完成后被调用,用于通知故障切换的执行结果。
MHA支持与限制
1、只支持BINLOG V4版本,要求MySQL 5.0或更高版本。 2、候选master节点必须开启log-bin参数,如果所有从节点都为开启,则不进行故障转移。 3、在MHA 0.52版本前不支持多master模式 4、MHA默认不支持多级主从复制,通过修改配置文件和设置multi_tier_slave参数
参考链接
MHA原理:https://code.google.com/p/mysql-master-ha/wiki/HowMHAWorks MHA原理PPT:http://www.slideshare.net/matsunobu/automated-master-failover MHA安装包:https://github.com/linyue515/mysql-master-ha/
以上是关于MySQL MHA工作原理的主要内容,如果未能解决你的问题,请参考以下文章