1、由于自己建了一个网站,mysql服务器经常自动死掉,导致网站上不去,所以,我需要每次都手动重启mysql服务,感觉很不爽。所以决定写一个shell脚本解决这个问题。
要解决这个mysql无规律自动停掉的问题,首先给服务器加个定时执行任务,每分钟去检测一下数据库服务的运行状态,要是down 掉了,就立马启动起来。
第一步,添加定时任务,使用crontab。
crontab -e
初次使用时,会让你选择编辑器,千万不要选nano,完全不知道怎么操作,我选了vim basic。
如果你已经是选了nano,如果想切到vim,可以通过以下操作切换:
方案一:
export EDITOR=vim && crontab -e
通过此命令便可使用vim编辑器打开
方案二:
select-editor
然后输入数字,选择想要的编辑器
打开crontab后,添加一行*/1 * * * * /usr/local/runmysql.sh
具体crontab语法:
* * * * * command to be executed
- - - - -
| | | | |
| | | | +----- day of week (0 - 6) (Sunday=0)
| | | +------- month (1 - 12)
| | +--------- day of month (1 - 31)
| +----------- hour (0 - 23)
+------------- min (0 - 59)
一个标准的 crontab 配置需要符合如下:
分 时 日 月 星期 要运行的命令
第二步,编写shell执行文件,代码如下:
#!/bin/bash
pgrep -x mysqld >& /dev/null
if [ $? -ne 0 ]
then
echo “At time: `date` :MySQL is stop .”>> /var/log/test
/etc/init.d/mysql start
else
echo “MySQL server is running .”
fi
这里要注意,不能用
service mysqld/mysql start
命令来启动,会导致mysql启动不了,应使用绝对路径,
/etc/init.d/mysql start
来启动。
另外,也可以不写入日志。删掉>> /var/log/test即可
可以自己先手动执行脚本,看看能不能执行成功。
cd到runmysql.sh目录 /usr/local/
执行./runmysql.sh #执行脚本,提示Permission denied
chmod 755 runmysql.sh
chmod +x ./runmysql.sh #使脚本具有执行权限
./runmysql.sh #执行脚本
提示mysql is running
service mysqld stop把mysql停掉。
执行./runmysql.sh,提示mysql已启动
完美解决问题