Wednesday, 12 February 2014


                        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

Configure EKS Persistent Static Storage With Elastic File System Using Terraform

  checkout :https://youtu.be/QuUIgQWBBZM