美文网首页
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