Function:
Monitor the MySQL process, the failure is restarted, if unable to start the email notification
The code is as follows:
The code is as follows |
Copy Code |
#!/bin/bash #/usr/bin/nmap localhost | grep 3306 #lsof-i:3306 mysqlport= ' Netstat-na|grep ' LISTEN "|grep" 3306″|awk-f[: ""]+ ' {print $} ' function Checkmysqlstatus () { /usr/bin/mysql-uroot-p11111–connect_timeout=5-e "show databases;" &>/dev/null 2>&1 If [$?-ne 0] Then Restartmysqlservice If ["$MYSQLPORT" = "3306"];then echo "MySQL Restart successful ..." Else echo "MySQL Restart failure ..." echo "Server: $MYSQLIP MySQL is down, please try to restart MySQL by manual!" >/var/log/mysqlerr #mail-S "warn! Server: $MYSQLIP MySQL are down "admin@yourdomain.com </var/log/mysqlerr Fi Else echo "MySQL is running ..." Fi } function Restartmysqlservice () { echo "Try to restart the MySQL service ..." /bin/ps aux |grep mysql |grep-v grep | awk ' {print $} ' | Xargs kill-9 Service MySQL Start } If ["$MYSQLPORT" = "3306"] Then Checkmysqlstatus Else Restartmysqlservice Fi |
Recommended to run once every 10 minutes
The code is as follows |
Copy Code |
*/10 * * * * root/bin/sh/root/mysql_status.sh
|
Specific principle:
1 The first detection of MySQL 3306 port is normal;
2 Use the account to connect the database and execute show databases command;
3 If the above two points can work correctly means that the database is running normally.
In addition, there are three different ways to monitor MYAQL ports:
code is as follows |
copy code |
1)/usr/bin /nmap localhost | grep 3306 2) lsof-i:3306 3) netstat-na|grep "LISTEN" |grep "3306″|awk-f[:" "]+ ' {print $} ' |