mysql 全量备份与增量备份脚本

 

全量备份

[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

你可能感兴趣的:(MySQL)