MHA-7实现MySQL的高可用

实验环境:

主机名 功能
server1 高可用节点
server2 高可用节点
server3 高可用节点
server4 管理节点

注意:高可用节点一般是奇数,因为如果master节点挂掉,需要竞选机制选出新的master节点。

一.高可用节点GTID异步复制

详细步骤参考之前博客:https://blog.csdn.net/chaos_oper/article/details/89817440
server1,server2,server3高可用节点,要保证三个节点数据保持一致

二.MySQL高可用的实现

server4(管理节点):

1.安装MHA和解决依赖性

yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm perl-*

在这里插入图片描述
2.管理节点server4要对三个高可用节点server1,2,3进行免密访问
1)

ssh-keygen	#生成密钥

在这里插入图片描述
2)添加本地域名解析

vim /etc/hosts
172.25.77.1  	server1
172.25.77.2		server2
172.25.77.3 	server3
172.25.77.4		server4

3)把锁分发到server1,server2,server3

ssh-copy-id server1
ssh-copy-id server2
ssh-copy-id server3

在这里插入图片描述
4)测试免密访问是否设置成功

ssh server1
ssh server2
ssh server3

在这里插入图片描述
5)设置使得server1,server2和server3之间可以免密访问

scp -r .ssh server1:
scp -r .ssh server2:
scp -r .ssh server3:

在这里插入图片描述

3.把mha4mysql-node-0.58-0.el7.centos.noarch.rpm安装转发给server1,2,3

scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server1:
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server2:
scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm server3:

在这里插入图片描述
4.建立目录,修改配置文件

mkdir -p /etc/masterha
vim app1.cnf

[server default]
manager_workdir=/etc/masterha
manager_log=/var/log/masterha.log
master_binlog_dir=/etc/masterha
#master_ip_failover_script= /usr/local/bin/master_ip_failover
#master_ip_online_change_script= /usr/local/bin/master_ip_online_change
password=WESTOS+123redhat
user=root
ping_interval=1
remote_workdir=/tmp
repl_password=WESTOS+123redhat
repl_user=repl
#report_script=/usr/local/send_report
#secondary_check_script= /usr/local/bin/masterha_secondary_check -s server03 -s server02
#shutdown_script=""
ssh_user=root

[server1]
hostname=172.25.77.1
port=3306
[server2]
hostname=172.25.77.2
port=3306
candidate_master=1
check_repl_delay=0

[server3]
hostname=172.25.77.3
port=3306
no_master=1

5.检测免密连接功能是否正常

masterha_check_ssh --conf=/etc/masterha/app1.cnf

6.复制功能检测是否正常:

masterha_check_repl --conf=/etc/masterha/app1.cnf

7.检查maneger是否能开启:(用ps ax命令查看进程)

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

8.检查开启后能否关闭:(用ps ax命令查看进程)

masterha_stop --conf=/etc/masterha/app1.cnf

server1(主库):
1.数据库备份:

mysqldump --all-databases --single-transaction --triggers --routines --events --host=127.0.0.1 --port=3306 --user=root --password=WESTOS+123redhat >wsq.sql

2.安装

yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

server2(从库):
1.set global read_only=1;
2.安装

yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

server3(从库):
1.set global read_only=1;
2.安装

yum install -y mha4mysql-node-0.58-0.el7.centos.noarch.rpm

测试:

1.关掉server1的mysqld服务
2.手动切换(server4)

masterha_master_switch --master_state=dead --conf=/etc/masterha/app1.cnf --dead_master_host=172.25.77.1 --dead_master_port=3306 --new_master_host=172.25.77.2 --new_master_port=3306

3.在server3上查看到:server2被提升成master节点

show slave status\G

在这里插入图片描述
4.server1
1)开启mysqld服务
2)将server1作为slave加入
change master to master_host='172.25.77.2',master_user='repl',master_password='WESTOS+123redhat',master_auto_position=1;
3)在server1开启slave

start slave;

4)server2被提升成master节点

show slave status\G 

在这里插入图片描述

三.在线迁移

手动切换是master节点down掉,手动切换到正常的节点。
在线迁移是不管master节点是否down掉,强制在线迁移到新的节点。
1.需要关闭管理器

masterha_stop --conf=/etc/masterha/app1.cnf

2.删除文件

rm -fr  app1.failover.complete

3.在线迁移

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=172.25.77.1 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000

在这里插入图片描述
在这里插入图片描述
4.从server2在线迁移到server1
在这里插入图片描述

四.脚本监控

1.打开管理器

nohup masterha_manager --conf=/etc/masterha/app1.cnf &> /dev/null &

在这里插入图片描述
2.目前主库是server1,将master节点down掉
在这里插入图片描述
3.
在这里插入图片描述
4.查看切换是否成功(server2成为新的master节点)
在这里插入图片描述
5.将server1重启mysqld服务,并加入从节点

systemctl start mysqld 

在这里插入图片描述
注意:下次执行脚本前要删除app1.failover.complete

五.VIP的漂移

此时server2为master节点,server1和server3为slave节点,server4为管理节点
管理节点(server4):
1.脚本模版
在这里插入图片描述在这里插入图片描述
2.将脚本复制到/usr/local/bin/,修改脚本,并加可执行权限

vim master_ip_failover 
	my $vip = '172.25.77.100/24';
	my $key = '1';
	my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
	my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
	
vim master_ip_online_change 
	my $vip = '172.25.77.100/24';  # Virtual IP  
	my $key = "1";
	my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
	my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";

在这里插入图片描述
3.将配置文件里的ip漂移打开

vim /etc/masterha/app1.cnf 
	master_ip_failover_script= /usr/local/bin/master_ip_failover    
	master_ip_online_change_script= /usr/local/bin/master_ip_online_change 

在这里插入图片描述

测试:
1.server2(master节点)添加ip:172.25.77.100/24
在这里插入图片描述
2.在线迁移,使得IP漂移到server1上

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=172.25.77.1 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000

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

3.查看IP从server2漂移到server1
在这里插入图片描述在这里插入图片描述
自动监控脚本漂移VIP:
4.开启自动监控脚本前要删除文件
在这里插入图片描述

5.开启自动监控脚本
在这里插入图片描述

6.将server1(master节点down掉)
在这里插入图片描述
7.查看IP漂移到server2上
在这里插入图片描述

发布了108 篇原创文章 · 获赞 127 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/chaos_oper/article/details/89978427