基于Innobackupex的MySQL备份脚本(二)
2015-01-23 22:03:59
·
作者:
·
浏览: 13
le}
echo "Current log file is : ${logFile}" >>${logFile}
# Define backup function for full and incremental backup type.
function back_full()
{
echo "$cmdInno --user=$mysqlUser --password=$mysqlPassword --no-timestamp \
--defaults-file=$defaultFile $physicalBackupDir/$dt/base_${dt} \
--socket=$sock 2> ${logDir}/bak_$ts.log" >>${logFile}
$cmdInno --user=$mysqlUser --password=$mysqlPassword --no-timestamp \
--defaults-file=$defaultFile $physicalBackupDir/$dt/base_$dt --socket=$sock 2> ${logDir}/bak_${ts}.log
grep last_lsn $physicalBackupDir/$dt/base_$dt/xtrabackup_checkpoints|cut -b 12- >$checkPointDir/ckp_${dt}
}
function back_inc()
{
echo " $cmdInno --user=$mysqlUser --password=$mysqlPassword --socket=$sock --no-timestamp \
--defaults-file=$defaultFile --incremental $basedir/inc_$dt \
--incremental-lsn=`cat $checkPointDir/ckp_$lastday` 2>${logDir}/bak_${ts}.log " >>${logFile}
$cmdInno --user=$mysqlUser --password=$mysqlPassword --port=${mysqlPort} --socket=$sock --no-timestamp \
--defaults-file=$defaultFile --incremental $basedir/inc_$dt \
--incremental-lsn=`cat $checkPointDir/ckp_$lastday` 2>${logDir}/bak_${ts}.log
grep last_lsn $basedir/inc_$dt/xtrabackup_checkpoints|cut -b 12- >$checkPointDir/ckp_$dt
}
case $day in
0)
# Sunday Full backup
back_full
;;
1)
# Monday Relatively Sunday's incremental backup
basedir=$physicalBackupDir/`date -d "1 days ago" +%Y%m%d`
back_inc
;;
2)
# Tuesday Compared with Monday's incremental backup
basedir=$physicalBackupDir/`date -d "2 days ago" +%Y%m%d`
back_inc
;;
3)
# Wednesday Full backup
back_full
;;
4)
# Thursday Relatively Wednesday's incremental backup
basedir=$physicalBackupDir/`date -d "1 days ago" +%Y%m%d`
back_inc
;;
5)
# Friday Compared with Thursday's incremental backup
basedir=$physicalBackupDir/`date -d "2 days ago" +%Y%m%d`
back_inc
;;
6)
# Saturday Compared with Friday's incremental backup
basedir=$physicalBackupDir/`date -d "3 days ago" +%Y%m%d`
back_inc
;;
esac
# Check backup log ,remove history logfile and bacupset.
retention=5
find ${physicalBackupDir} -type f -mtime +$retention -exec rm {} \;
find ${logDir} -type f -mtime +$retention -exec rm {} \;
# Send mail for backup result.
echo "" >
>${logFile}
echo "Below is detail log for current innobackup.">>${logFile}
cat ${logDir}/bak_${ts}.log >>${logFile}
mailadd='jack@12306.cn,ww@12306.cn'
if [ -e "${logFile}" ]; then
status=`grep -i "innobackupex: completed OK!" ${logFile}`
if [ -n "${status}" ]; then
cat ${logFile} |mutt -s "Successful backup for MySQL hotbackup on `hostname`." $mailadd
else
cat ${logFile} |mutt -s "Failed backup for MySQl hotbackup on `hostname`." $mailadd
fi
else
echo "The hotbackup logfile was not found on `hostname`." | \
mutt -s "Failed backup for MySQl hotbackup on `hostname`." $mailadd
fi
exit
3、调用示例
SHELL> more call_innobk.sh
#!/bin/bash
/db_scripts/innobk.sh --backup-dir=/data/backup --host=127.0.0.1 --port=3306 --user=innobk --password=InnoBK
SHELL> crontab -l
0 3 * * * /db_scripts/call_innobk.sh
SHELL> cd /data/backup
SHELL> ls
checkpoint log physical
SHELL> cd physical/
SHELL> ls
20141228 20141231 20150104 20150107
SHELL> cd 20150107
SHELL> ls -hltr
total 1