監控MYSQL服務是否異常

問題描述:監控MYSQL服務是否正常啓動,若是未正常啓動,就啓動MYSQLmysql

判斷mysql的方法:web

1)端口判斷sql

[root@localhost ~]# netstat -lntup | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2288/mysqld

2)進程判斷bash

[root@localhost ~]# ps -ef | grep mysqld      
mysql     2071     1  0 11:32 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql     2288  2071  0 11:32 ?        00:00:24 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
root     10097  6962  0 17:27 pts/1    00:00:00 grep --color=auto mysqld

3)返回值判斷
curl

[root@localhost ~]# mysql -uroot -proot -e "select version();" &>/dev/null 
[root@localhost ~]# echo $?
0

法一:實現思路是過濾出MYSQL端口3306進行判斷:socket

#!/bin/bash
port=`netstat -lnt|grep 3306|wc-l`
if [ $port -ne 1 ]
then
  /etc/init.d/mysql start
else
    echo "MySQL is running."
fi

執行結果:
[root@localhost ~]# sh mysql1.sh  
MySQL is running.


法二:實現思路是經過MYSQL進程進行判斷:tcp

#!/bin/bash
portcess=`ps -ef|grep mysql|grep -v grep|wc -l`
if [ $portcess -ne 2 ]
then
  /etc/init.d/mysqld start
else
  echo "MySQL is running."
fi


執行結果:
[root@localhost ~]# sh mysql1.sh  
MySQL is running.

注意:過濾的字符串‘mysql’不要在腳本名字出現,若是出現則不許

法三:實現思路是經過web鏈接返回值判斷:
ide

#!/bin/bash
mysql -uroot -proot -e "select version();" &>/dev/null
if [ $? -ne 0 ]
then
  /etc/init.d/mysqld start
else
  echo "MySQL is running."
fi

執行結果:
[root@localhost ~]# sh mysql1.sh  
MySQL is running.


小結:web服務監控手段:url

  1. 端口(本地或者遠程)spa

  2. 本地進程

  3. header(httpd code)

  4. URL(wget,curl

相關文章
相關標籤/搜索