#!/bin/bash
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/mysql/bin:/root/bin
DATADIR=/data/mydata
BACKUPDIR=/data/dbbackup/`hostname`
BACKHOST=192.168.1.226
MAILBODY=/data/dbbackup/`hostname`/mail
USER=root
TIME=`date +%Y-%m-%d_%H-%M-%S`
INCREMENTAL=/data/dbbackup/localhost.localdomain/incremental
FULLTIME=`ls /data/dbbackup/localhost.localdomain/|grep "2014-12-11*"`
FULLBACKDIR=/data/dbbackup/localhost.localdomain/$FULLTIME
if [ -z $1 ];then
DATE=`date +%a`
else
DATE=Sun
fi
if [ ! -d "$BACKUPDIR" ]
then
echo "NO BACKUP DIR!"
exit
fi
>$MAILBODY
echo "`hostname`'s Backup Time is `date +%Y/%m/%d_%H:%M`" >>$MAILBODY
echo "--------------------------------------------------" >>$MAILBODY
full_backup(){
innobackupex --user=root --password=redhat --host=127.0.0.1 --no-timestamp --databases=jrd --defaults-file=/usr/local/mysql/my.cnf "$BACKUPDIR/$TIME" && innobackupex --apply-log "$BACKUPDIR/$TIME"
if [ $? -eq 0 ]
then
echo "`hostname`'s DB local backup SUCCESS(full)" >>$MAILBODY
LOCALDUMPMD5=`md5sum $BACKUPDIR/$TIME/jrd/*|awk '{print $1}'`
else
echo "WARNING......WARNING......WARNING......" >>$MAILBODY
echo "`hostname`'s DB dump FAILED" >>$MAILBODY
echo "`hostname`'s Backup script TERMINAL" >>$MAILBODY
echo " " >>$MAILBODY
#!send mail
exit
fi
rsync -az $BACKUPDIR/$TIME $USER@$BACKHOST:$BACKUPDIR/ >/dev/null 2>&1
REMOTEDUMPMD5=`ssh $USER@$BACKHOST md5sum $BACKUPDIR/$TIME/jrd/*|awk '{print $1}'`
if [ "${LOCALDUMPMD5}" == "${REMOTEDUMPMD5}" ]
then
echo "`hostname`'s DB save to remote host SUCCESS" >>$MAILBODY
else
echo "WARNING......WARNING......WARNING......" >>$MAILBODY
echo "`hostname`'s DB save to remote host FAILED" >>$MAILBODY
fi
echo "`hostname`'s DB Backup END">>$MAILBODY
echo "--------------------------------------------------" >>$MAILBODY
}
increase_backup(){
if [ -d "${INCREMENTAL}" ]
then
innobackupex --user=root --password=redhat --host=127.0.0.1 --databases=jrd --defaults-file=/usr/local/mysql/my.cnf --no-timestamp --incremental --incremental-basedir="$FULLBACKDIR" "$INCREMENTAL/$TIME"
if [ $? -eq 0 ]
then
echo "`hostname`'s DB local backup SUCCESS(increase)" >>$MAILBODY
LOCALBINLOGMD5=`md5sum $INCREMENTAL/$TIME/jrd/*|awk '{print $1}'`
else
echo "WARNING......WARNING......WARNING......" >>$MAILBODY
echo "`hostname`'s DB dump FAILED" >>$MAILBODY
echo "`hostname`'s Backup script TERMINAL" >>$MAILBODY
echo " " >>$MAILBODY
#!send mail
exit
fi
fi
rsync -az $INCREMENTAL/$TIME $USER@$BACKHOST:"$INCREMENTAL" >/dev/null 2>&1
REMOTEBINLOGMD5=`ssh $USER@$BACKHOST md5sum "$INCREMENTAL/$TIME/jrd/*"|awk '{print $1}'`
if [ "${LOCALBINLOGMD5}" == "${REMOTEBINLOGMD5}" ]
then
echo "`hostname`'s DB-BIN-LOG save to remote host SUCCESS" >>$MAILBODY
else
echo "WARNING......WARNING......WARNING......" >>$MAILBODY
echo "`hostname`'s DB-BIN-LOG save to remote host FAILED" >>$MAILBODY
fi
echo "`hostname`'s DB Backup END">>$MAILBODY
echo "--------------------------------------------------" >>$MAILBODY
}
if [ $DATE == Sun ]
then
full_backup
else
increase_backup
fi
if file $BACKUPDIR/`date -d "30 day ago" +%Y-%m-%d*` >/dev/null 2>&1
then
rm -rf $BACKUPDIR/`date -d "30 day ago" +%Y-%m-%d*`
fi
sudo rsync -az $MAILBODY $USER@$BACKHOST:$BACKUPDIR >/dev/null 2>&1