Shell script to restart MySQL server if it is killed or not working
We will create a bash script and run via cron job and set the time as per your requirement. If you don’t know how to create bash script, please read “How to create Linux bash script”
#!/bin/bash |
# Shell script to restart MySQL server if it is killed or not working |
# due to ANY causes. |
# When script detects mysql is not running (it basically sends ping request |
# to MySQL) it try to start using /etc/init.d/mysql script; and it sends an |
# email to user indicating the status. |
# This script must be run from Cron Job so that it can monitor mysql server. |
# For more info visit following url: |
# http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/08/linux-mysql-server-monitoring.html |
# -------------------------------------------------------------------------- |
# Copyright (C) 2005 nixCraft project <http://cyberciti.biz/fb/> |
# This script is licensed under GNU GPL version 2.0 or above |
# ------------------------------------------------------------------------- |
# This script is part of nixCraft shell script collection (NSSC) |
# Visit http://bash.cyberciti.biz/ for more information. |
# ------------------------------------------------------------------------- |
# mysql root/admin username |
MUSER="your-username" |
# mysql admin/root password |
MPASS="your-password" |
# mysql server hostname |
MHOST="localhost" |
#Shell script to start MySQL server i.e. path to MySQL daemon start/stop script. |
# Debain uses following script, need to setup this according to your UNIX/Linux/BSD OS. |
MSTART="/etc/init.d/mysql start" |
# Email ID to send notification |
EMAILID="your-email@domain.com" |
# path to mail program |
MAILCMD="$(which mail)" |
# path mysqladmin |
MADMIN="$(which mysqladmin)" |
#### DO NOT CHANGE anything BELOW #### |
MAILMESSAGE="/tmp/mysql.fail.$$" |
# see if MySQL server is alive or not |
# 2&1 could be better but i would like to keep it simple and easy to |
# understand stuff :) |
$MADMIN -h $MHOST -u $MUSER -p${MPASS} ping 2>/dev/null 1>/dev/null |
if [ $? -ne 0 ]; then |
echo "" >$MAILMESSAGE |
echo "Error: MySQL Server is not running/responding ping request">>$MAILMESSAGE |
echo "Hostname: $(hostname)" >>$MAILMESSAGE |
echo "Date & Time: $(date)" >>$MAILMESSAGE |
# try to start mysql |
$MSTART>/dev/null |
# see if it is started or not |
o=$(ps cax | grep -c ' mysqld$') |
if [ $o -eq 1 ]; then |
sMess="MySQL Server MySQL server successfully restarted" |
else |
sMess="MySQL server FAILED to restart" |
fi |
# Email status too |
echo "Current Status: $sMess" >>$MAILMESSAGE |
echo "" >>$MAILMESSAGE |
echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE |
echo "*** Please don't reply this email, this is just notification email ***" >>$MAILMESSAGE |
# send email |
$MAILCMD -s "MySQL server" $EMAILID < $MAILMESSAGE |
else # MySQL is running :) and do nothing |
: |
fi |
# remove file |
rm -f $MAILMESSAGE |
Leave a Reply