mysql 自动重启

1. 创建一个 cron-mysql.sh 文件,用于检查 mysql 进程是否运行,否则启动 mysql

#!/bin/bash
time=$(TZ=UTC-8 date "+%Y-%m-%d %H:%M:%S")
echo $time

RED='\e[1;91m' # 红
GREEN='\e[1;92m' # 绿
RES='\e[0m' # 清除颜色

# 进入当前脚本所在目录,防止找不到文件
script_dir=$(cd $(dirname $0);pwd)
cd $script_dir


count_mysql_process(){
    # 获取 mysql 进程
    mysql_pids=`ps -aux|grep "/mysqld" | awk '{print $2}'`
    # awk print 实际上以逗号分隔,但在展示上会以空格分隔
    # 转换为数组
    mysql_arr=(`echo $mysql_pids | tr ',' ' '`)
    # 进程数量
    mysql_len=${#mysql_arr[@]}
    return $mysql_len
}


count_mysql_process
mysql_len=$?
# 进程数量大于或等于2表示正在运行(其中一个是 grep 的)
if [ $mysql_len -ge 2 ];then
    echo -e "MySQL ${GREEN}  运行中...  ${RES}"
else
    echo -e "MySQL ${RED}  未启动,正在重新启动...  ${RES}"
    
    sudo systemctl start mysql
    
    count_mysql_process
    mysql_len=$?
    if [ $mysql_len -ge 2 ];then
        echo -e "MySQL ${GREEN}  运行中...  ${RES}"
    else
        echo -e "MySQL ${RED}  失败  ${RES}"
    fi
fi

exit 0

2. 设置 crontab :(此处每 10 分钟检查一次)

*/10 *  *   *   *     /bin/bash /your_path/cron-mysql.sh

发表评论


*