专栏首页Urlteamshell脚本实现监控服务器mysql,解决服务器内存不足自动关闭mysql问题

shell脚本实现监控服务器mysql,解决服务器内存不足自动关闭mysql问题

这个问题困扰许久了,因为我的阿里云服务器只有500M和1G内存,往往在网站访问量大的时候就会导致服务器的apache进程过多之后导致mysql服务被自动关闭。

其网站表现就会是数据库无法连接。之前尝试使用swap做交换区让服务器内存加大到2G,问题出现的频率就低了。但是偶尔还是会在大并发的访问下导致内存不足,so,做了一个脚本,能够自动监控服务器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
                        sleep 2
                        [ $? != 0 ]&&break
                done
                startMysql
        fi
fi

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

然后提高这个文件的权限

chmod 777 mysql-listen.sh

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

service mysql stop

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

sh mysql-listen.sh

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

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

/etc/init.d/mysql start
部分的可能是
/etc/init.d/mysqld start

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

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

#第一次使用cron,得用序号选择编辑器

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

保存后退出。

重启cron就可以了

service cron restart

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

原创文章,转载请注明: 转载自URl-team

本文链接地址: shell脚本实现监控服务器mysql,解决服务器内存不足自动关闭mysql问题

  1. linux下free查看内存命令详细解析
  2. Linux查看实时带宽流量情况以及查看端口信息
  3. wordpress解决谷歌字体问题–与谷歌字体的战争!
  4. linux运维常用状态检测工具集锦
  5. 解决.htaccess: Invalid command ‘RewriteEngine’,问题
  6. 解决 启动mysql 提示 stop: Unknown instance

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux自动备份mysql数据库|mysql备份

    安装教程地址:https://wiki.nooss.cn/archives/84.html

    乄浪漫经典
  • java架构之路-(MQ专题)RocketMQ从入坑到集群详解

      这次我们来说说我们的RocketMQ的安装和参数配置,先来看一下我们RocketMQ的提出和应用场景吧。

    小菜的不能再菜
  • VS Code 1.40 发布!可自行搭建 Web 版 VS Code!

    今天(北京时间 2019 年 11 月 8 日),微软发布了 Visual Studio Code 1.40 版本。让我们来看看有哪些主要的更新。

    张晓衡
  • 手把手使用SonarQube分析、改善项目代码质量

    SonarQube是一个开源的代码质量管理系统,可用来快速定位代码中的Bug、漏洞以及不优雅的代码。它支持几乎所有的常见编程语言,例如Java、JavaScri...

    用户4172423
  • 靶机实战 |『VulnHub系列』Bottleneck 1-Walkthrough

    发现这个img标签的src的值有点特别,对其进行base64解码,得到图片名称bottleneck_dontbe.png

    7089bAt@PowerLi
  • docker的一些命令

    docker create --name myrunoob nginx:latest

    用户5200809
  • Linux sudo权限提升漏洞(CVE-2019-14287)

    因为需要用户拥有root权限,这也意味着用户的sudoers中的runas说明符中具有特殊值ALL

    天钧
  • 搭建 RocketMQ 集群

    单机模式, 即只有一个Broker, 如果Broker宕机了, 会导致RocketMQ服务不可用, 不推荐使用.

    张乘辉
  • Linux服务器为什么被黑?

    安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓。

    用户6543014
  • 【Git笔记1】本地项目与GitHub远程仓库互联

    秋招面试的时候,面试官就问了我:你会Git吗?我迟疑看着他,他微笑着说,入职前要抓紧时间好好学习一下。

    小小詹同学

扫码关注云+社区

领取腾讯云代金券