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