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

shell脚本监控mysql服务宕机自启

731

戳这里,加关注哦~


当服务器内存特别小,往往在网站访问量大的时候就会导致服务器的nginx进程过多,之后导致mysql服务被自动关闭。

所以,做了一个脚本,能够自动监控服务器mysql的状态,如果发现进程关闭就自动重启。

shell脚本如下:

    #!/bin/bash


    checkMysql(){
    CMDCHECK=`lsof -i:3306 &>/dev/null`
    Port="$?"
    PIDCHECK=`ps aux|grep mysqld|grep -v grep`
    PID="$?"
    if [ "$Port" -eq "0" -a "$PID" -eq 0 ];then
    return 200
    else
    return 500
    fi
    }
    startMysql(){
    etc/init.d/mysql start
    }
    checkMysql
    if [ $? == 200 ];then
    echo "Mysql is running..."
    else
    startMysql
    checkMysql
    if [ $? != 200 ];then
    while true
    do
    killall mysqld
    [ $? != 0 ] && break
    sleep 2
    done
    startMysql
    fi
    fi

    直接复制过去,在服务器上建立一个mysql-listen.sh
    的文件,

    然后为这个文件添加可执行权限

    chmod a+x mysql-listen.sh

    然后先检查一下这个脚本是否可用,先关闭服务器的mysql

    service mysql stop

    然后访问你的网址,如果出现数据库连接失败说明数据已经关闭了,然后运行这个脚本

    bash mysql-listen.sh

    然后看是否有信息说明服务器已经正在运行mysql且提供一个进程号。

    我在这个阶段出了错误,首先是没有改权限导致并有没有权限去启动mysql,其次启动mysql的命令在不同服务器上有时候是不一样的,有的是
    /etc/init.d/mysql start

    部分的可能是
    systemctl start mysql

    接下来需要让这个脚本隔一段时间自动运行。

    使用crontab -e
    在最后一行补上

    */5 * * * *  bash /root/mysql-listen.sh

    这里/5中的5 是指5分钟一次。后面是4个代表小时,日,月,星期。最后是你脚本的路径。

    保存后退出。

    这样就会每隔5分钟,执行一次检测mysql的脚本。

    回复干货获取精选干货视频教程

    回复加群加入疑难问题攻坚交流群

    回复mat获取内存溢出问题分析详细文档教程

    回复赚钱获取用java写一个能赚钱的微信机器人

    回复副业获取程序员副业攻略一份



    戳这儿



    好文,分享给更多人看看

    文章转载自侠梦的开发笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论