序言
我当前的这个 Blog 运行在 Linux VPS 上, 但是由于 VPS 内存较小, 随着数据量的增加, 已经出现了多次 MySQL 挂掉的情况, 我本人发现不及时的话就会出现长时间宕机的情况, 因此有了这个检测 MySQL 状态的需求。
方案
直接使用的 Linux 中最常用的 Shell 脚本, 脚本也特别简单, 就是查看当前系统中是否有 mysqld 服务的进程 ID , 即 PID, 若没有就重新拉起来 mysqld 。
当然不管 mysqld 有没有挂掉都会记录日志, 方便我后期查看情况是否特别严重, 如果很严重的话, 就要考虑改进一下网站架构了 。
废话少说, 脚本如下:
#!/bin/bash
pgrep -x mysqld &> /dev/null
if [ $? -ne 0 ]
then
echo `date +"%F %T"`: MySQL is stoped. >> /home/wwwlogs/mysql_restart.log
lnmp mysql start
else
echo `date +"%Y-%m-%d %H:%M:%S"`: MySQL server is running. >> /home/wwwlogs/mysql_restart.log
fi
就几行代码, so easy !
当然, 我还需要定时执行, 例如每隔 15 分钟检测一次, 虽然每次执行的时间很短暂, 但是由于流量不大, 也就不需要检测太频繁了, 当然主要原因是 VPS 内存不足, 所以这只是一个临时解决方案, 后面再改进, 定时执行的换直接使用 Linux 的 crontab 工具 :
crontab -e # 进入编辑 crontab 状态
0 12 * * * ntpdate cn.pool.ntp.org # 每天 12 点执行同步时间命令
*/15 * * * * bash /home/script/mysql_restart.sh # 每隔 15 分钟执行 MySQL 检测脚本
然后就一切 OK 了 。 如下是我的执行日志 :
2021-07-12 18:15:01: MySQL server is running.
......
2021-07-14 00:45:01: MySQL server is running.
2021-07-14 01:00:02: MySQL is stoped.
2021-07-14 01:15:01: MySQL server is running.
......
2021-07-15 20:30:01: MySQL server is running.
2021-07-15 20:45:01: MySQL server is running.
2021-07-15 21:00:01: MySQL server is running.
从 7 月 12 号截止当前, 就 7 月 14 号零点 45 分到 1 点这个 15 分钟间, MySQL 挂过一次, 如果等我自己发现, 需要等到白天, 这中间至少有 8 个小时是挂机状态, 总的来说是可用的。
结语
本次就先到此结束, 后面再考虑更好的办法。
如有错误,敬请指出,感谢指正! — 2021-07-15 21:10:57
最新评论
这个软件有bug的,客户端windows有些键不能用如逗号、句号
没有收到邮件通知
我的评论通知貌似坏掉了,定位一下问题
测试一下重新部署后的邮件功能
居然看到自己公司的MIB库,诚惶诚恐
那可能是RobotFramework-ride的版本问题。我装的1.7.4.2,有这个限制。我有空再尝试下旧版本吧,感谢回复。
你好!我在python2.7中安装RobotFramework-ride的时候提示wxPython的版本最高是2.18.12,用pip下载的wxPython版本是4.10,而且我在那个路径下没有找到2
真的太好了,太感谢了,在bilibili和CSDN上都找遍了,终于在你这里找到了