Welcome 微信登录

首页 / 数据库 / MySQL / 监控MySQL进程的脚本,故障则重启,如无法启动则Email通知

在这里贡献一本人写的一监控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 33062)lsof -i:33063)netstat -na|grep "LISTEN"|grep "3306"|awk -F[:" "]+ "{print $5}"这里采用的是第三种。注意,不同的操作系统"{print $5}"处可能不一样,请各人自己测试。如果采用的第一种方式,需要安装nmap。MySQL主从同步,监控从库运行状态脚本MySQL对性能较为强劲的服务器利用率测试相关资讯      MySQL脚本 
  • MySQL 5.5.40自动化安装脚本  (10/26/2014 13:04:24)
  • 自动清理MySQL 的Lock 进程的脚本  (09/05/2012 16:19:51)
  • MySQL中批量创建日志表信息脚本  (10/10/2014 17:04:55)
  • MySQL5.5 自动分区脚本  (06/17/2012 18:37:22)
本文评论 查看全部评论 (0)
表情: 姓名: 字数