MHA实现mysql的高可用

关于 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> show slave status\G;

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MHA(Master High Availability)是一个用于MySQL主从复制环境下自动故障切换和主从切换的可用性解决方案。它可以自动监控MySQL主从复制环境的运行状态,并在主库发生故障时自动将从库切换为新的主库,从而实现MySQL可用性。MHA的安装和配置相对简单,可以通过以下步骤实现: 1.安装MHA软件包和依赖项 ```shell yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles perl-Data-Dumper -y rpm -ivh mha4mysql-node-0.58-0.el6.noarch.rpm ``` 2.创建MHA配置文件 ```shell vi /etc/mha/app1.cnf ``` 在配置文件中添加以下内容: ```shell [server default] user=root password=123456 ssh_user=root repl_user=repl repl_password=123456 ping_interval=3 ping_type=SELECT master_binlog_dir=/data/mysql/mysql3306/data remote_workdir=/usr/local/mha ssh_port=22 master_ip_failover_script=/usr/local/mha/failover master_ip_online_change_script=/usr/local/mha/online_change shutdown_script=/usr/local/mha/shutdown_script report_script=/usr/local/mha/send_report [server1] hostname=192.168.1.101 port=3306 [server2] hostname=192.168.1.102 port=3306 ``` 3.测试MHA配置文件 ```shell masterha_check_ssh --conf=/etc/mha/app1.cnf masterha_check_repl --conf=/etc/mha/app1.cnf ``` 4.启动MHA管理节点 ```shell nohup masterha_manager --conf=/etc/mha/app1.cnf & ``` 5.测试MHA自动故障切换 在MHA管理节点上执行以下命令: ```shell masterha_master_switch --master_state=alive --conf=/etc/mha/app1.cnf --orig_master_is_new_slave --new_master=192.168.1.102 ``` 该命令将会将原来的主库(192.168.1.101)切换为从库,将原来的从库(192.168.1.102)切换为新的主库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值