mysql:高可用配置

MHA介绍

MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,MHA是由日本人开发,是一套优秀的MySQL故障切换和主从复制的高可用软件
在MySQL故障切换的过程中,MHA能做到0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能够最大程度上保证数据库的一致性,以达到真正意义上的高可用
MHA由perl语言编写,该工具仅仅使用于MySQLReplication环境,目的在于维持Master主库的高可用性
MHA是基于标准的MySQL主从复制(异步/半同步)
MHA由两部分组成管理节点(MHA manager)和数据节点(MHA Node)两部分组成
MHA manager 可以单独部署在一台服务器上,可以部署在一台slave上面

MHA特点

自动故障切换过程中,MHA总会试图从宕机的主服务器上保存二进制日志,最大程度的保证数据不丢失

但这并不总是可行,例如如果主服务器硬件故障或者无法通过ssh访问,MHA则无法保存二进制日志,只能进行故障转移而丢失了最新的数据

使用MySQL5.5的半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来,如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此可以保证所有节点的数据一致性,有时候可故意设置从节点慢于主节点,当发生意外删除数据库倒是数据丢失时可从从节点二进制日志中恢复。

MHA :为了解决的了是故障切换、数据尽可能的保存,以及所有节点日志的一致性

配置

前置配置

#需要1台服务器作为manager对剩下的三台服务器进行调度,3台服务器做主从复制且作为node节点服务器受manager进行调度
192.168.60.215	manager服务器
192.168.60.214	主服务器
192.168.60.11	从服务器1
192.168.60.20	从服务器2

#每台服务器创建两个软链接
ln -s /usr/local/mysql/bin/mysql /usr/sbin
ln -s /usr/local/mysql/bin/mysqlbinlog /usr/sbin

#安装并完成主从同步后,每个服务器都为mysql和mha用户赋予以下权限
grant replication slave on *.* to 'myslave'@'192.168.60.%' identified by '123';
grant all privileges on *.* to 'mha'@'192.168.60.%' identified by 'manager';
grant all privileges on *.* to 'mha'@'master' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave1' identified by 'manager';
grant all privileges on *.* to 'mha'@'slave2' identified by 'manager';
flush privileges;	#刷新一下权限

#配置ssh免密登录,每台服务器都对四台服务器配置以下
ssh-keygen -t rsa
ssh-copy-id 192.168.60.214
ssh-copy-id 192.168.60.11
ssh-copy-id 192.168.60.20
ssh-copy-id 192.168.60.215

配置mha

#每台服务器上下载以下软件
yum -y install epel-release --nogpgcheck

yum -y install perl-DBD-MySQL \
perl-Config-Tiny \
perl-Log-Dispatch \
perl-Parallel-ForkManager \
perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker \
perl-CPAN

#将node软件包拖入所有服务器,manager软件包拖入manager服务器
#安装node节点
tar zxvf mha4mysql-node-0.57.tar.gz -C /opt
cd /opt/mha4mysql-node-0.57/
perl Makefile.PL
make && make install

#会生成几个文件
save_binary_logs			#保存和复制master的二进制日志
apply_diff_relay_logs 		#识别差异的中继日志时间,并将其差异的事件应用于其他的slave
filter_mysqlbinlog			#去除不必要的ROLLBACK回滚事件(MHA 已不适用这个工具)
purge_relay_logs			#清除中继日志(不会阻塞 SQL线程)

#manager服务器安装manager节点
tar zxvf mha4mysql-manager-0.57.tar.gz -C /opt
cd /opt/mha4mysql-manager-0.57/
perl Makefile.PL
make && make install

#会生成几个文件
masterha-check_ssh  		检查MHASSH配置状况(免交互)
masterha_check_repl  		检查MySQL复制状况
masterha_manager 			启动manager的脚本
masterha_check_status 		检查当前MHA运行状态
masterha_master_monitor 	检查master是否宕机
masterha_master_switch 		控制故障转移(自动或者手动)
masterha_conf_host 			添加或删除配置的server信息
masterha_stop  				关闭manager
#对manager服务器进行配置
#将MHA的相关脚本复制到/usr/local/bin目录并将master_ip_failover复制到/usr/local/bin
cp -ra /opt/mha4mysql-manager-0.57/samples/scripts/ /usr/local/bin
cp /usr/local/bin/scripts/master_ip_failover /usr/local/bin

/sbin/ifconfig ens33:1 192.168.60.200	#master服务器配置一个虚拟ip

vim /usr/local/bin/master_ip_failover
配置内容如下图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#创建MHA软件目录并拷贝配置文件
mkdir /etc/masterha
cp /root/mha4mysql-manager-0.57/samples/conf/app1.cnf /etc/masterha/
vim /etc/masterha/app1.cnf
配置内容如下图

在这里插入图片描述

#测试无密码认证,如果正常会输出successfully 
masterha_check_ssh -conf=/etc/masterha/app1.cnf

#测试主从复制,正常会出现Health is OK.	不正常出现Health is NOT OK.
masterha_check_repl -conf=/etc/masterha/app1.cnf

在这里插入图片描述
在这里插入图片描述

测试

开启MHA后,关闭主服务器,查看主服务器是否转到从服务器

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

#在主服务器上关闭mysql
pkill -9 mysql

#manager服务器上查看是否主服务器转到从服务器上了
tail -f /var/log/masterha/app1/manager.log

可以看到成功主服务器成功转到其他服务器
在这里插入图片描述

#在新的主服务器创建一个表,并插入表中数据
mysql> use games;
Database changed

mysql> create table test(id int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into test values(2);
Query OK, 1 row affected (0.00 sec)

#在另一台从服务器上查看该表
mysql> use games;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select * from test;
+------+
| id   |
+------+
|    2 |
+------+
1 row in set (0.00 sec)

#发现能成功显示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值