MySQL增量备份和全备

dapaoadmin 2020-03-31 AM 993℃ 0条

9b6602ac34f15b06538dac4b563eee88.jpg
全备:

!/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, 数据库

非特殊说明,本博所有文章均为博主原创。

评论已关闭