日期:2014-05-16  浏览次数:20926 次

SUSE11下MYSQL的定时增量备份
参考以下文章:http://hi.baidu.com/liuyingan02/blog/item/4fef92d66c1c590c622798b9.html

mysql的增量备份其实是备份二进制日志文件,通过二进制日志文件即可对mysql进行增量恢复。
结合上篇写的全量备份,mysql总的备份思想即为:先全量备份,然后删除所有已产生的二进制日志文件,再增量备份,每次增量备份后都删除掉此次增量备份所备份的二进制日志文件,下次备份只需要备份新的二进制日志文件即可。

以下是增量备份add.sh脚本

#!/bin/sh

# mysql binlog backup script

/usr/bin/mysqladmin flush-logs -u root -p111111

DATADIR=/var/lib/mysql

DATEDIR=$(date +%Y%m%d%H%M%S)
echo $DATEDIR

BAKDIR=/home/liangfuming/backup/daily/$DATEDIR

if [ ! -e ${BAKDIR} ];then
mkdir -p $BAKDIR
fi

###如果你做了特殊设置,请修改此处或者修改应用此变量的行:缺省取机器名,mysql缺省也是取机器名
#HOSTNAME=`uname -n`
#echo $HOSTNAME

cd $DATADIR

FILELIST=`cat mysql-bin.index`

##计算行数,也就是文件数

COUNTER=0

for file in $FILELIST

do

COUNTER=`expr $COUNTER + 1 `

done

NextNum=0

for file in $FILELIST

do

base=`basename $file`

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $COUNTER ]

then
echo $base
/usr/bin/mysql -u root -p111111<<EOF
#删除二进制日志文件
purge binary logs to '$base';
EOF
echo "skip lastest"

else

echo "copying $base"

cp $base $BAKDIR

fi

done

echo "backup mysql binlog ok"



定时任务的处理:
suse11下面,先执行命令
crontab  -e
然后往文件里面编写
*/1 * * * * /home/liangfuming/myscript/add.sh
然后wq
以上表示每一分钟执行一次add.sh