MHA实现mysql的高可用

本文详细介绍了如何使用MHA搭建并测试MySQL的高可用环境,包括一主二从的配置、MHA架构的建立、故障手动及自动切换、VIP漂移的实现,以及在切换过程中遇到的问题及其解决方案。
摘要由CSDN通过智能技术生成

关于 MHA:

1.Master HA,对主节点进行监控,可实现自动故障转 移至其它从节点;通过提升某一从
节点为新的主节点,基于主从复制实现,还需要客户端配合实现,目前MHA主要支持一主多
从的架构,要搭建MHA,要求一个复制集群中必须最少有 三台数据库服务器,一主二从,
即一台充当master,一台充当备用master,另外一台充当从库,如果财大气粗,也
可以用一台专门的服务器来当MHA监控管理服务器
2.MHA工作原理
	1 从宕机崩溃的master保存二进制日志事件(binlog events) 
	2 识别含有最新更新的slave 
	3 应用差异的中继日志(relay log)到其他的slave 
	4 应用从master保存的二进制日志事件(binlog events) 
	5 提升一个slave为新的master 
	6 使其他的slave连接新的master进行复制 
	
	注意:MHA需要基于ssh,key验证登入方法	

这里写图片描述

MHA软件由两部分组成,Manager工具包和Node工具包,具体的说明如下。
1.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信息
2.Node工具包(这些工具通常由MHA Manager的脚本触发,无需人为操作)主要包括以下几个工具:
	save_binary_logs                保存和复制master的二进制日志
	apply_diff_relay_logs           识别差异的中继日志事件并将其差异的事件应用于其他的slave
	filter_mysqlbinlog              去除不必要的ROLLBACK事件(MHA已不再使用这个工具)
	purge_relay_logs                清除中继日志(不会阻塞SQL线程)
环境设定
base2 172.25.78.12 主master,MHA manager
base3 172.25.78.13 备用master
base4 172.25.78.14 slave
1.先搭建一主二从环境
# 在base2上
[root@base2 ~]# vim /etc/my.cnf
server-id=1
gtid_mode=ON
enforce-gtid-consistency=true
log_bin = binlog
log_slave_updates=ON

在这里插入图片描述

[root@base2 ~]# systemctl start mysqld
[root@base2 ~]# mysql -p
Enter password: 
mysql> grant replication slave on *.* to repl@'172.25.78.%' identified by 'Ting@666';
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_master_enabled=1;
mysql> SET GLOBAL rpl_semi_sync_master_timeout=1000000000000;
mysql> show variables like '%rpl%';

在这里插入图片描述

mysql> show status like '%rpl%';

在这里插入图片描述

mysql> QUIT
Bye
# 在base3上
[root@base3 ~]# vim /etc/my.cnf
server_id=2
gtid_mode =ON
enforce-gtid-consistency=true
log_bin = binlog
log_slave_updates=ON

在这里插入图片描述

[root@base3 ~]# systemctl start mysqld
[root@base3 ~]# mysql -p
Enter password:
mysql> stop slave;
mysql> change master to master_host='172.25.78.12',master_user='repl',master_password='Ting@666',MASTER_AUTO_POSITION=1;
mysql> start slave;
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
mysql> SET GLOBAL rpl_semi_sync_master_enabled=1;
mysql> stop slave io_thread;
mysql> start slave io_thread;
mysql> show slave status\G;

在这里插入图片描述

mysql> stop slave io_thread;
mysql> start slave io_thread;
mysql> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值