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

Mysql检查脚本控制keepalived(2)

作者: 刘小白DOER | 来源:发表于2020-10-03 12:41 被阅读0次

    在上一篇文章-Mysql检查脚本控制keepalived 中,笔者改进了脚本,判断命令执行成功与否和完善了日志功能。如下:

#!/bin/bash

mysql -uphpmyadmin -proot -e "select version();" >/dev/null 2>&1

#mysql -uphpmyadmin -proot -e "show status;"#

if [ $? -ne 0 ] ;then

    #echo $(date)". mysql error!" >>/etc/keepalived/action.log

    sudo service keepalived stop

    if [ $? -ne 0 ] ;then

      echo $(date +'%Y-%m-%d %H:%M:%S')". mysql error.but ACTION keepalived-stop failed." >>/etc/keepalived/action.log

    else

      echo $(date +'%Y-%m-%d %H:%M:%S')". mysql error.ACTION keepalived-stop success." >>/etc/keepalived/action.log

    fi

else

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

    if [ $keepalivedcheck -eq 0 ] ;then

        sudo  service keepalived start

        if [ $? -ne 0 ] ;then

            echo $(date +'%Y-%m-%d %H:%M:%S')". mysql normal,keepalived already stopped.but ACTION keepalived-start failed" >>/etc/keepalived/action.log

        else

            echo $(date +'%Y-%m-%d %H:%M:%S')". mysql normal,keepalived already stopped.ACTION keepalived-start success" >>/etc/keepalived/action.log

        fi

###test code

    #else

        #echo $(date)". keepalived is running!" >>/etc/keepalived/action.log

##test code

    fi

        #echo $(date)". mysql running!" >>/etc/keepalived/action.log

fi

    这个脚本checkmysql.sh可以单独执行,在上一篇文章中一是提出使用循环(循环时间可控)包装这个脚本,并做成服务放置于启动文件中。而是置于crontab定时任务中,每个一秒检查一下,间隔时间固定为1秒。

    这次笔记通过查看keepalived的配置说明,可以将脚本放置于配置文件keepalived.conf中,让keepalived来判断执行。修改后的配置文件如下,和上一篇文章主要的区别就是vrrp_script 、 track_script。

vrrp_script check_mysql_76 {

        script "/etc/keepalived/checkmysql.sh"  #脚本位置

       interval 10            #脚本执行间隔10秒

}

配置文件

    可以通过tail -f /var/log/messages来查看keepalived日志,上篇文章已经阐述过。但是笔者发现在mysql数据库故障时,keepalived.conf的脚本可以正常执行并停止keepalived服务,vip也正常切换;当mysql数据库正常时,此时keepalived服务已经停止了,keepalived中的脚本就无法执行了,即mysql数据库恢复时需要手动拉起keepalived程序!

    在生产中,数据库故障是需要DBA来处理的,只有在处理完毕恢复正常时keepalived才可用,也合情合理。还有一个问题,keepalived中的检查脚本执行时,action.log中居然没有记录到日志,但是单独拉起脚本时日志正常,脚本路径、日志路径都是写的全路径,权限777,毫无头绪,不知道什么原因!

相关文章

网友评论

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

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