暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql mgr的浮动VIP自己写脚本简单有效

原创 jieguo 2023-04-23
784

参考:https://www.modb.pro/db/624217

应用连接到vip,主库宕机将自动切换到从库(5秒内vip可正常)

mysql mgr集群中所有节点都需要检查部署:

vip打算挂在哪个网卡上? 记录网卡名称eth0和网关:
[root@mgr01 ~]# ip a|grep global
    inet 192.168.207.131/24 brd 192.168.207.255 scope global noprefixroute eth0
[root@mgr01 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.207.1   0.0.0.0         UG    100    0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.207.0   0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@mgr01 ~]# ip route
default via 192.168.207.1 dev eth0 proto static metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
192.168.207.0/24 dev eth0 proto kernel scope link src 192.168.207.131 metric 100

避免连接密码警告提示:
[root@mgr01 ~]# cat /etc/my.password 
[client]
user=root
password=1qazXSW@
检测脚本:
[root@mgr01 ~]# cat /etc/vip_check.sh 
step=3
for ((i = 0; i < 60; i = (i + step))); do
    $(/etc/vip.sh)
    sleep $step
done
exit 0
[root@mgr01 ~]# cat /etc/vip.sh
#!/bin/bash
dbstats=`/usr/bin/mysql --defaults-extra-file=/etc/my.password -s -P 33062 -e "select MEMBER_HOST,MEMBER_ROLE from performance_schema.replication_group_members;"|grep "192.168.207.131"|awk '{print $2}'|grep "PRIMARY"|wc -l` #注意修改此处的IP地址为本机的IP
ip=`/usr/sbin/ip a|grep eth0:1|wc -l`
 
if [[ "${dbstats}" -eq 1 ]] ; then
    if [[ "${ip}" -eq 0 ]]; then
    /usr/sbin/ifconfig eth0:1 192.168.207.134 netmask 255.255.255.0 up ##注意修改网卡名称和浮动IP地址
    /usr/sbin/arping -I eth0 -b -s 192.168.207.134 192.168.207.1 -c 4 ##解决了vip切换后5秒内可联通的问题,不加arping可能需要耗时5分钟左右
    fi
else
    if [[ "${ip}" -gt 0 ]]; then
    /usr/sbin/ifconfig eth0:1 down
    fi
fi

设置定时任务:
[root@mgr01 ~]# crontab -l
* * * * * /etc/vip_check.sh > /dev/null 2>&1

检查VIP是否正常:
ip a|grep 192.168.207.134
ping 192.168.207.134

集群维护常用命令参考:

启动mysql数据库:
service mysql start
连接mysql:
mysql -h192.168.207.131 -uroot -p"password"
检查集群状态:
select * from performance_schema.replication_group_members;
从节点加入集群:
start group_replication;
所有节点都宕机的情况下:
查看各个节点全局事务ID:
show global variables like '%gtid%';
选择gtid值最大的作为主库,然后在该节点执行如下步骤:
SET GLOBAL group_replication_bootstrap_group=ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group=OFF;
其它从节点只需执行:
START GROUP_REPLICATION;
检查主从状态:
select * from performance_schema.replication_group_members;
手动切换主:
select group_replication_set_as_primary('75f92847-db80-11ed-8681-000c29676ef3');
 
最后修改时间:2023-04-26 16:44:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论