Backup all your MySQL databases
#!/bin/bash
# set -x
start_time=`date +%k" Hour "-" "%M" Min "-" "%S" Sec."`
MyUSER="root"
MyPASS="admin"
MyHOST="localhost"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
MYSQLADMIN="$(which mysqladmin)"
DEST="/mysqlbackup"
ARCHIVE="/mysqlbackup"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"
MAIL="$(which mail)"
SUBJECT1="Some thing goes wrong with Mysql Database. Backup operation not Performed"
EMAIL="raj13aug@gmail.com"
EMAILMESSAGE="/tmp/emailmessage.txt"
#HOST="$(hostname)"
DEST="/mysqlbackup"
MBD="$DEST/mysql-`(date +"%d-%m-%Y")`"
# Get data in dd-mm-yyyy format
NOW="$(date +"%d-%m-%Y")"
# File to store current backup file
FILE=""
# Store list of databases
DBS=""
# DO NOT BACKUP these databases
#IGGY="test"
#IGGY="information_schema"
EXCLUDE="test information_schema"
# Get all database list first
mysql_alive=`"$MYSQLADMIN" -uroot -padmin -s ping|grep alive|wc -l`
if [ "$mysql_alive" == 1 ];then
{
if [ -d "$DEST" ] && [ -w "$DEST" ];then
{
echo "Ready to Perform Backup"
}
else
{
echo "Backup Directory either does not exists or not Writeable by User: `echo $USER|tr [a-z] [A-Z]`" > $EMAILMESSAGE
/bin/mail -s "$SUBJECT1" "$EMAIL" < $EMAILMESSAGE
exit 0
}
fi
[ ! -d $MBD ] && mkdir -p $MBD || :
# Only root can access it!
$CHOWN 0.0 -R $DEST
$CHMOD 0600 $DEST
DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')"
for db in $DBS
do
skipdb=-1
if [ "$EXCLUDE" != "" ];
then
for i in $EXCLUDE
do
[ "$db" == "$i" ] && skipdb=1 || :
done
fi
if [ "$skipdb" == "-1" ] ; then
FILE="$MBD/$db.$NOW.sql.gz"
$MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS --routines $db | $GZIP -9 > $FILE
fi
done
end_time=`date +%k" Hour "-" "%M" Min "-" "%S" Sec."`
echo "Backup Operation Started at $start_time and Ended at $end_time" > $EMAILMESSAGE
/bin/mail -s "Mysql Database Backup Process Detail on 10.10.3.53(Testing Server App1) " "$EMAIL" < $EMAILMESSAGE
}
else
{
echo "Oops Can't Connect to Database, may be your database server is DOWN" > $EMAILMESSAGE
/bin/mail -s "$SUBJECT1" "$EMAIL" < $EMAILMESSAGE
exit 0;
echo
}
fi
dim_m=`date +%m`
dim_y=`date +%Y`
days=`cal $dim_m $dim_y | egrep -v '[A-Za-z]' | wc -w`
date_d=`date +%d`
if [ "$date_d" == "$days" ];
then
echo "Archiving Data"
#cd $DEST
#find . -type d -mtime -1 -exec ls -d {} \; | cut -d/ -f2| grep -vE '\.' | xargs mv `awk '{print $1}'` "$ARCHIVE/"
#rm -rf $DEST/*
#else
#echo "Today is not the Last day of the month, so nothing to archve";
fi
# To delete files older than 8 days
find /mysqlbackup -mtime +7 -type d | xargs rm -rf
No comments:
Post a Comment