用鼠标与指尖
让互联网更加有趣

MySQL增量备份和全备

全备:

!/bin/bash

export LANG=en_US.UTF-8

BackDir=/www/backup/databases

LogFile=/www/backup/database/back.log

Date=date +%Y%m%d

Begin=date +"%Y年%m月%d日 %H:%M:%S"

cd $BackDir

DumpFile=$Date.sql

GZDumpFile=$Date.sql.tgz

mysqldump -uroot -p<font color=”#ff0000″>数据库的root用户的密码</font> –all-databases –flush-logs –delete-master-logs –single-transaction > $DumpFile

tar -czvf $GZDumpFile $DumpFile

rm $DumpFile

count=$(ls -l *.tgz |wc -l)

if [ $count -ge 5 ]

then

file=$(ls -l *.tgz |awk !{print $9}!|awk !NR==1!)

rm -f $file

fi

保留1个月的备份文件

Last=date +"%Y年%m月%d日 %H:%M:%S"

echo 开始:$Begin 结束:$Last $GZDumpFile succ >> $LogFile

cd $BackDir/daily

rm -f *

增量备份:

!/bin/bash

export LANG=en_US.UTF-8

BackDir=/www/backup/databases

BinlogDir=/www/server/data

LogFile=/www/backup/database/back.log

BinFile=/www/server/data/mysql-bin.index

mysqladmin -uroot -p数据库的root用户的密码 flush-logs

这个是用于产生新的mysql-bin.00000*文件

Counter=wc -l $BinFile |awk !{print $1}!

NextNum=0

这个for循环用于比对$Counter,$NextNum这两个值来确定文件是不是存在或最新的。

for file in cat $BinFile

do

base=`basename $file`

#basename用于截取mysql-bin.00000*文件名,去掉./mysql-bin.000005前面的./

NextNum=`expr $NextNum + 1`

if [ $NextNum -eq $Counter ]

then

    echo $base skip! >> $LogFile

else

    dest=$BackDir/$base

    if(test -e $dest)

    #test -e用于检测目标文件是否存在,存在就写exist!到$LogFile去。

    then

        echo $base exist! >> $LogFile

    else

        cp $BinlogDir/$base $BackDir

        echo $base copying >> $LogFile

    fi

fi

done

echo date +"%Y年%m月%d日 %H:%M:%S" Bakup succ! >> $LogFile

支付宝扫码打赏 微信扫码打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者

未经允许不得转载:小伟博客 » MySQL增量备份和全备

分享到:更多 ()

评论 抢沙发

小伟博客 · 给你感兴趣的内容

联系我们官方交流群