手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

监控MySQL进程的脚本,故障则重启,如无法启动则Email通知

[日期:2012-08-23] 来源:blog.csdn.net/faye0412  作者:faye0412 [字体: ]

在这里贡献一本人写的一监控MySQL进程的脚本,希望对大家有所帮助。

功能:

监控MYSQL进程,故障则重启,如无法启动则Email通知

代码如下:

  1. #!/bin/bash  
  2. #/usr/bin/nmap localhost | grep 3306  
  3. #lsof -i:3306  
  4. MYSQLPORT=`netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'`  
  5.   
  6. function checkMysqlStatus(){  
  7.     /usr/bin/mysql -uroot -p11111 --connect_timeout=5 -e "show databases;" &>/dev/null 2>&1  
  8.     if [ $? -ne 0 ]  
  9.     then  
  10.         restartMysqlService  
  11.         if [ "$MYSQLPORT" == "3306" ];then  
  12.             echo "mysql restart successful......"   
  13.         else  
  14.             echo "mysql restart failure......"  
  15.             echo "Server: $MYSQLIP mysql is down, please try to restart mysql by manual!" > /var/log/mysqlerr  
  16.             #mail -s "WARN! server: $MYSQLIP  mysql is down" admin@yourdomain.com < /var/log/mysqlerr  
  17.         fi  
  18.     else  
  19.         echo "mysql is running..."  
  20.     fi  
  21. }  
  22.   
  23. function restartMysqlService(){  
  24.     echo "try to restart the mysql service......"  
  25.     /bin/ps aux |grep mysql |grep -v grep | awk '{print $2}' | xargs kill -9  
  26.     service mysql start  
  27. }  
  28.   
  29. if [ "$MYSQLPORT" == "3306" ]  
  30. then  
  31.     checkMysqlStatus  
  32. else  
  33.     restartMysqlService  
  34. fi  

建议每十分钟运行一次
*/10 * * * * root /bin/sh /root/mysql_status.sh

具体原理:

1)先检测MYSQL的3306端口是否正常;

2)使用帐号连接数据库并执行show databases命令;

3)如以上两点都能正常工作则表示数据库运行正常。

另外,监控MYAQL端口可以使用三种方式:

1)/usr/bin/nmap localhost | grep 3306

2)lsof -i:3306

3)netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ '{print $5}'

这里采用的是第三种。注意,不同的操作系统'{print $5}'处可能不一样,请各人自己测试。如果采用的第一种方式,需要安装nmap。

linux
相关资讯       MySQL脚本 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款