全量备份
[root@lf-319-161 scripts]# cat wqbk.sh
#!/bin/bash
#use mysqldump to fully backup mysql data
BakDir=/mnt/sata02/backup/wqbk
LogFile=/mnt/sata02/backup/wqbk/bak.log
Begin=`date +"%Y年%m月%d日 %H:%M:%S"`
cd $BakDir
mysqldump -uroot -pxxx -h10.191.22.136 -F -R -E --master-data=2 --default-character-set=utf8 --single-transaction -B hive |gzip > /mnt/sata02/backup/wqbk/mysql_$(date +%F).sql.gz
Last=`date +"%Y年%m月%d日 %H:%M:%S"`
echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile
参数注释:
--all-databases #备份所有库
--lock-all-tables #为所有表加读锁
--routinge #存储过程与函数
--triggers #触发器
--events #记录事件
--master-data=2 #在备份文件中记录当前二进制日志的位置,并且为注释的,1是不注释掉在主从复制中才有意义
--flush-logs,-F #日志滚动一次
-R (--routines:导出存储过程以及自定义函数)
-E (--events:导出事件)
--triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
增量备份:
[root@lf-319-161 scripts]# cat zlbk.sh
#!/bin/bash
BakDir=/mnt/sata02/backup/log
BinDir=/mnt/sata01/mysql
LogFile=/mnt/sata02/backup/log/bak.log
BinFile=/mnt/sata01/mysql/mysql-bin.index
mysqladmin -uroot -pxxx flush-logs
Counter=`wc -l $BinFile|awk '{print $1}'`
NextNum=0
for file in `cat $BinFile`
do
base=`basename $file`
NextNum=`expr $NextNum + 1`
if [ $NextNum -eq $Counter ]
then
echo $base skip! >> $LogFile
else
dest=$BakDir/$base
if(test -e $dest)
then
echo $base exist! >> $LogFile
else
cp $BinDir/$base $BakDir/
echo $base copying >> $LogFile
fi
fi
done
echo `date +"%Y年%m月%d日 %H:%M:%S"` $Next Bakup succ~ >> $LogFile
3.设置crontab任务,每天执行备份脚本
# crontab -l //内容为下
#每个星期日凌晨3:00执行完全备份脚本
0 3 * * 0 /mnt/sata02/backup/scripts/wqbk.sh >/dev/null 2>&1
#周一到周六凌晨3:00做增量备份
0 3 * * 1-6 /mnt/sata02/backup/scripts/zlbk.sh >/dev/null 2>&1
参考网址:
http://www.cnblogs.com/houweijian/p/9626757.html