美文网首页
Mysql检查脚本控制keepalived(1)

Mysql检查脚本控制keepalived(1)

作者: 刘小白DOER | 来源:发表于2020-09-26 21:49 被阅读0次

      最近笔者逛论坛发下一个Mysql数据库的健康检查脚本,来试验一下。按照之前的两个树莓派配置:mariadb双主复制+keepalived,只能在树莓派服务器宕机、进程阻塞、网络故障等情况下才会VIP漂移,Mysql数据库本身发生故障是不会切换的。

    mysqlHealthCheck.sh

#!/bin/sh

while:

do

mysql -uroot -proot -e"select version();"

if[ $? -ne 0 ]; then

#echo "mysql error!!!"

    service keepalived stop

else

    keepalivedcheck=`ps -C keepalived --no-header | wc -l`

if[$keepalivedcheck-eq 0 ] ;then

              service keepalived start

else

#echo "keepalived is running"              :

fi

#echo "mysql running!!!"

fi

sleep 5

done

    这个脚本通过5秒的循环执行来检查数据库执行select version();是否正常来检查数据库是否正常。其中有两个重要的命令如下:

    mysql -uroot -proot -e"select version();"连接数据库并执行select version();

  keepalivedcheck=`ps -C keepalived --no-header | wc -l  列出keepalived进程的行数,不包括头部那一行。当然这个命令也可以用 ps -ef |grep keepalived| grep -v grep |wc -l 来代替,输出结果都是2。

    在实际运行, service keepalived start/stop需要root权限,需要加上sudo service keepalived start/stop 才能成功。可以运行service mysql stop 停掉一个mysql ,通过VIP检查客户端数据库访问和交互是否正常。

    脚本 nohup /etc/keepalived/mysqlHealthCheck.sh  >/dev/null 2>log &放置在两台树莓派/etc/init.d下就可以开机启动,每五秒执行一次这个脚本。在数据库故障时,sudo service keepalived stop,VIP漂移到热备树莓派;在数据库恢复正常时,sudo service keepalived start重新开启开启keepalived 进程,如果是master抢占式VIP就会重新漂移回来。

    此脚本忽略两个数据库同步问题,不等从数据库把数据同步完就进行切换。如果时间不局限于5秒的话,可以不要while循环,只需要脚本中黑色部分,放在cron定时任务下1分钟检查 一次。但是如果mariadb是基于GTID复制,数据没有同步完需要怎么检查呢?留待下一次来完善吧!

    整个脚本只负责控制keepalived 进程的启动和停止,伴随着VIP的漂移,摒弃故障mysql数据库。但在故障时,调用日志/var/log/mysql/error.log,通知运维人员来处理,这个就有其他脚本来处理。数据库恢复正常后,在测试阶段可以杀掉  mysqlHealthCheck.sh脚本进程,然后在运行脚本,自动拉起keepalived 进程。

相关文章

网友评论

      本文标题:Mysql检查脚本控制keepalived(1)

      本文链接:https://www.haomeiwen.com/subject/etshuktx.html