MySQL-MHA高可用搭建

本文详细介绍了一种基于MHA的高可用性解决方案,包括环境准备、互信配置、软件安装、状态检查及故障恢复流程。通过具体步骤指导如何实现1主2从的MHA集群配置,确保数据库系统的稳定性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.准备环境

IP 				角色
10.0.0.51 	master
10.0.0.52 	slave1(manage)
10.0.0.53 	slave2

2.搭建1主2从(忽略)
3.配置关键程序软连接

ln -s /data/app/mysql/bin/mysqlbinlog    /usr/bin/mysqlbinlog
ln -s /data/app/mysql/bin/mysql          /usr/bin/mysql

4.配置各节点互信(各节点之间无密码SSH)

db01:
	rm -rf /root/.ssh 
	ssh-keygen
	cd /root/.ssh 
	mv id_rsa.pub authorized_keys
	scp  -r  /root/.ssh  10.0.0.52:/root 
	scp  -r  /root/.ssh  10.0.0.53:/root 
各节点验证
db01:
	ssh 10.0.0.51 date
	ssh 10.0.0.52 date
	ssh 10.0.0.53 date
db02:
	ssh 10.0.0.51 date
	ssh 10.0.0.52 date
	ssh 10.0.0.53 date
db03:
	ssh 10.0.0.51 date
	ssh 10.0.0.52 date
	ssh 10.0.0.53 date

5.安装软件

5.1 下载mha软件
	mha官网:https://code.google.com/archive/p/mysql-master-ha/
	github下载地址:https://github.com/yoshinorim/mha4mysql-manager/wiki/Downloads

5.2 所有节点安装Node软件依赖包
	yum install perl-DBD-MySQL -y
	rpm -ivh mha4mysql-node*.rpm
5.3 在db01主库中创建mha需要的用户
	grant all privileges on *.* to mha@'10.0.0.%' identified by 'mha';
5.4  Manager软件安装(db03)
	yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes
	rpm -ivh mha4mysql-manager*.rpm

6.配置文件准备(db03)

6.1 创建配置文件目录
	mkdir -p /etc/mha
6.2 创建日志目录
	mkdir -p /var/log/mha/app1
6.3 编辑mha配置文件
	vim /etc/mha/app1.cnf
	[server default]
	manager_log=/var/log/mha/app1/manager        
	manager_workdir=/var/log/mha/app1            
	master_binlog_dir=/data/binlog/      
	user=mha                                   
	password=mha                               
	ping_interval=2
	repl_password=123
	repl_user=repl
	ssh_user=root 
	                      
	[server1]                                   
	hostname=10.0.0.51
	port=3306                                  
	[server2]            
	hostname=10.0.0.52
	candidate_master=1 
	port=3306
	[server3]
	hostname=10.0.0.53
	port=3306

7.状态检查

互信检查
	masterha_check_ssh  --conf=/etc/mha/app1.cnf 
主从状态检查
	masterha_check_repl --conf=/etc/mha/app1.cnf 

8.开启MHA(db03):

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

9.查看MHA状态

[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf

10.什么是高可用?

企业高可用标准:全年无故障时间
无故障时间           故障时间      
99.9%                0.1%     = 525.6  min        KA+双主 :人为干预 
99.99%               0.01%    = 52.56  min        MHA     :半自动化
99.999%              0.001%   = 5.256  min        PXC 、 MGR 、MGC
99.9999%             0.0001%  = 0.5256 min        自动化、云化、平台化

11.MHA的软件结构

一堆perl写的脚本。

12.组件

12.1 manager 组件
	masterha_manger             启动MHA 
	masterha_check_ssh      	检查MHA的SSH配置状况 
	masterha_check_repl         检查MySQL复制状况 
	masterha_master_monitor     检测master是否宕机 
	masterha_check_status       检测当前MHA运行状态 
	masterha_master_switch  	控制故障转移(自动或者手动)
	masterha_conf_host      	添加或删除配置的server信息
12.2 node 组件
save_binary_logs            保存和复制master的二进制日志 
apply_diff_relay_logs       识别差异的中继日志事件并将其差异的事件应用于其他的
purge_relay_logs            清除中继日志(不会阻塞SQL线程)

13.模拟故障并恢复

13.0 工作状态查看
	[root@db03 app1]# masterha_check_status --conf=/etc/mha/app1.cnf 
	app1 (pid:17501) is running(0:PING_OK), master:10.0.0.51
13.1 宕主库测试
	[root@db01 ~]# /etc/init.d/mysqld stop
	Shutting down MySQL............ SUCCESS! 
13.2 看日志
	[root@db03 app1]# vim /var/log/mha/app1/manager
13.3 修复故障节点
	[root@db01 ~]# /etc/init.d/mysqld start
	Starting MySQL.. SUCCESS! 

14.如果生产怎么办? 按实际情况。

14.1 恢复主从
	change master to 
		master_host='10.0.0.52',
		master_user='repl',
		master_password='123' ,
		MASTER_AUTO_POSITION=1;
	start slave;

14.2 修复配置文件 
方法一:  
	vim /etc/mha/app1.cnf
	[server1]
	hostname=10.0.0.51
	port=3306
方法二: 
	masterha_conf_host --command=add --conf=/etc/mha/app1.cnf --hostname=10.0.0.51 --block=server10 --params="port=3306"
	masterha_conf_host --command=delete --conf=/etc/mha/app1.cnf --block=server1

14.3 预检测脚本
	[root@db03 ~]# masterha_check_ssh  --conf=/etc/mha/app1.cnf
	[root@db03 ~]# masterha_check_repl  --conf=/etc/mha/app1.cnf 

14.4 启动MHA 
	nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover  < /dev/null> /var/log/mha/app1/manager.log 2>&1 &

14.5 查看MHA状态
	[root@db03 ~]# masterha_check_status --conf=/etc/mha/app1.cnf 
	app1 (pid:24316) is running(0:PING_OK), master:10.0.0.52 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值