昔日辉煌不再,MHA老矣,尚能饭否?
作者:IT邦德
中国DBA联盟(ACDU)成员,10余年DBA工作经验,
Oracle、PostgreSQL ACE
CSDN博客专家及B站知名UP主,全网粉丝10万+
擅长主流Oracle、MySQL、PG、
高斯及Greenplum备份恢复,
安装迁移,性能优化、故障应急处理微信:jem_db
QQ交流群:587159446
公众号:IT邦德
@
1.MHA简介
2.工作原理
3.MHA管理操作
3.1 检查复制
3.2 检查MHA状态
3.3 启动MHA Manager
4.故障转移
5.总结
前言
MHA在MySQL高可用方面是一个相对成熟的解决方案,最近帮助客户部署了一套MHA,分享一些技术点给大家
1.MHA简介
MHA是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。MHA仅适用于MySQL Replication环境,目的在于维持Master主库的高可用性。
2.工作原理
MHA由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHAManager可以独立部署在一台独立的机器上管理多个Master-Slave集群,也可以部署在一台Slave上。
MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中Master节点。当Master出现故障时,它可以自动将具有最新数据的Slave提升为新的Master,然后将所有其他的Slave重新指向新的Master。整个故障转移过程对应用程序是完全透明的。
MHA node运行在每台MySQL服务器上,它通过监控具备解析和清理logs功能的脚本来加快故障转移的。
3.MHA管理操作
3.1 检查复制
masterha_check_repl --conf=/etc/mha/mha.cnf
--注解
“MySQL Replication Health is OK.”
表示1主2从的架构目前是正常的
3.2 检查MHA状态
masterha_check_status --conf=/etc/mha/mha.cnf注意:如果正常,会显示“PING_OK",
否则会显示“NOT_RUNNING",
这代表MHA监控没有开启
3.3 启动MHA Manager
nohup masterha_manager \
--conf=/etc/mha/mha.cnf < /dev/null > \
/usr/local/mha/manager_start.log 2>&1 &
此处多启动几次,检查结果显示“PING_OK”,
表示MHA监控软件已经启动了,主库为192.168.68.131
注意,一旦自动failover发生,
mha manager就停止监控了,需要手动再次开启
此时一定要确定VIP是否正常
4.故障转移
主库如果宕机后,即停止MySQL服务,那么故障怎么处理?
① VIP135自动漂移到132
② 主库自动变为132,命令为:show slave hosts;
mysql> show slave hosts;
mysql> select @@hostname,@@report_host;
③ MHA进程自动停止
ps -ef|grep mha
④ MHA切换过程日志
tail -100f /usr/local/mha/manager_running.log# 在131上执行恢复
mysql -uroot -proot -h192.168.1.54 -P33131
CHANGE MASTER TO MASTER_HOST='192.168.68.132',
MASTER_PORT=3306,
MASTER_AUTO_POSITION=1,
MASTER_USER='repl',
MASTER_PASSWORD='root';
mysql> start slave;
mysql> show slave status \G
5.总结
MHA是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。MHA仅适用于MySQL Replication环境,目的在于维持Master主库的高可用性!