配置vip漂移
本文目的,为实现当mysql主节点挂掉后,从节点变为主节点时,代码连接数据库的ip需要修改的问题。
采用vip的方式,代码连接VIP地址进行读写。连接从节点ip进行读。
VIP对应的服务器始终是mysql集群中的主节点。
安装keepalived
三台服务器都安装
yum install keepalived -y
修改配置文件
1、修改11主配置文件
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_BACKUP
}
#检测mysql是否存活
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface eno16780032 # 修改为实际网卡名
virtual_router_id 66 # VRRP 路由 ID实例,每个实例是唯一的
priority 100 # 优先级,备服务器设置 90 80
nopreempt #设置为非抢占模式
advert_int 1 # 指定VRRP 心跳包通告间隔时间,默认1秒
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
172.16.251.99/24
}
track_script {
check_mysql
}
}
EOF
2、修改12从配置文件
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_BACKUP
}
#检测mysql是否存活
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface eno16780032 # 修改为实际网卡名
virtual_router_id 66 # VRRP 路由 ID实例,每个实例是唯一的
priority 90 # 优先级,备服务器设置 90 80
nopreempt #设置为非抢占模式
advert_int 1 # 指定VRRP 心跳包通告间隔时间,默认1秒
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
172.16.251.99/24
}
track_script {
check_mysql
}
}
EOF
3、修改13从配置文件
三台集群最多允许挂一台,最低优先级的服务器可以不进行设置是否抢占
cat > /etc/keepalived/keepalived.conf << EOF
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_BACKUP
}
#检测mysql是否存活
vrrp_script check_mysql {
script "/etc/keepalived/check_mysql.sh"
}
vrrp_instance VI_1 {
state BACKUP
interface eno16780032 # 修改为实际网卡名
virtual_router_id 66 # VRRP 路由 ID实例,每个实例是唯一的
priority 80 # 优先级,备服务器设置 90 80
advert_int 1 # 指定VRRP 心跳包通告间隔时间,默认1秒
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP
virtual_ipaddress {
172.16.251.99/24
}
track_script {
check_mysql
}
}
EOF
编写check_mysql.sh脚本
cat > /etc/keepalived/check_mysql.sh << "EOF"
#!/bin/bash
count=$(ss -antp |grep mysql |egrep -cv "grep|$$")
if [ "$count" -eq 0 ];then
systemctl stop keepalived
fi
EOF
设置开机自启keepalive
systemctl start keepalived ; systemctl enable keepalived
查看状态
systemctl status keepalived
systemctl restart keepalived
主服务器挂掉后执行:
启动数据库
#启动
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --daemonize
#登陆
mysql -uroot -ptj123456
启动组复制
START GROUP_REPLICATION USER='mgr_user', PASSWORD='mgr@123';
查询组复制
SELECT * FROM performance_schema.replication_group_members;
重启keepalive
systemctl restart keepalived
systemctl status keepalived

本文介绍如何通过配置Keepalived实现MySQL集群中虚拟IP(VIP)的漂移,确保主节点故障时,VIP能平滑切换到备用节点,保持数据库服务的高可用性。
830

被折叠的 条评论
为什么被折叠?



