自动化mysql周期全备和增量备份


本项目是实现mysql全备和增备脚本,需修改相关参数即可。可指定周期备份。按每周几,镜像全备、增备指定参数即可。

#!/usr/bin/bash
_rootdir=/opt/db/dbbk
_bkdir=bk_`date +%Y%m%d`
_fullbkw=`date +%w`
_fullbkw1=0
_fullbkw2=3
_bkbin=/usr/bin/innobackupex
_mycnf=/etc/my.cnf
_myhost=127.0.0.1
_myuser=root
_mypwd='X123@111'
_myport=3306
_bktmp=/tmp
_bkandsynclog=$_rootdir$_bkdir/mysqldata/bksynclog.md
_tmplog=/tmp/sqllog.log

if [ $_fullbkw -eq $_fullbkw1 ] || [ $_fullbkw -eq $_fullbkw2 ]; then
        echo -e "full bk begin!"
        sleep 5
        if [ -f "$_rootdir/$_bkdir/full/xtrabackup_info" ]; then
                echo -e "today full bkup is already exits!"
        else
                mkdir -p $_rootdir/$_bkdir/{full,incr,log}
                _bklog=$_rootdir/$_bkdir/log
                $_bkbin --defaults-file=$_mycnf --no-timestamp --host=$_myhost --user=$_myuser --password=$_mypwd --port=$_myport --tmpdir=$_bktmp $_rootdir/$_bkdir/full > $_tmplog 2>&1
                        _checkbkok=$(tail -n 1 $_tmplog | grep "completed OK" | wc -l)
                        if [ $? -eq 0 ] && [ $_checkbkok -eq 1 ]; then
                                echo -e "bk-succeed !"
                                sleep 5
                                echo "full-bk-succeed" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "completed OK|succeed" | xargs | sed 's/ /<-->/g' >> $_bklog/succ.log
                        else
                                echo -e "bk-error !"
                                sleep 5
                                echo "full-bk-error" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "full-bk-error" | xargs | sed 's/ /<-->/g' >> $_bklog/error.log
                        fi
        fi
else
        echo -e "incr bk begin!"
        sleep 5
        #拿到最新的全备目录
        _lastfulldir=$(ls -lhtr $_rootdir/ | tail -n 1 | awk '{print $9}')
        #拿到增备的目录数
        _incrnum=$(ls -lhtr $_rootdir/$_lastfulldir/incr | grep -v total | wc -l)
        #_incrnum=$(ls -lhtr $_rootdir/$_lastfulldir/incr | grep ^d | wc -l)
        if [ $_incrnum -eq 0 ]; then
                #说明是第一次增备
                echo -e "1 incr"
                #mkdir -p $_rootdir/$_lastfulldir/incr/$_bkdir
                sleep 2
                if [ -f "$_rootdir/$_lastfulldir/incr/$_bkdir/xtrabackup_info" ]; then
                        echo -e "today incr bkup is already exits!"
                else
                        _bklog=$_rootdir/$_lastfulldir/log
                        $_bkbin --defaults-file=$_mycnf --no-timestamp --host=$_myhost --user=$_myuser --password=$_mypwd --port=$_myport --incremental $_rootdir/$_lastfulldir/incr/$_bkdir --incremental-basedir=$_rootdir/$_lastfulldir/full > $_tmplog 2>&1
                        _checkbkok=$(tail -n 1 $_tmplog | grep "completed OK" | wc -l)
                        if [ $? -eq 0 ] && [ $_checkbkok -eq 1 ]; then
                                echo -e "bk-succeed !"
                                sleep 5
                                echo "incr-bk-succeed" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "completed OK|succeed" | xargs | sed 's/ /<-->/g' >> $_bklog/succ.log
                        else
                                echo -e "bk-error !"
                                sleep 5
                                echo "incr-bk-error" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "incr-bk-error" | xargs | sed 's/ /<-->/g' >> $_bklog/error.log
                        fi
                fi
        else
                #获取增备最后最后一个目录
                _lastincrdir=$(ls -lhtr $_rootdir/$_lastfulldir/incr | tail -n 1 | awk '{print $9}')
                sleep 1
                #说明不是第一次增备
                echo -e "not 1 incr"
                #mkdir -p $_rootdir/$_lastfulldir/incr/$_bkdir
                sleep 1
                echo -e "$_rootdir/$_lastfulldir/incr/$_lastincrdir"
                sleep 3
                if [ -f "$_rootdir/$_lastfulldir/incr/$_bkdir/xtrabackup_info" ]; then
                        echo -e "today incr bkup is already exits! is {$_rootdir/$_lastfulldir/incr/$_bkdir}"
                else
                        _bklog=$_rootdir/$_lastfulldir/log
                        $_bkbin --defaults-file=$_mycnf --no-timestamp --host=$_myhost --user=$_myuser --password=$_mypwd --port=$_myport --incremental $_rootdir/$_lastfulldir/incr/$_bkdir --incremental-basedir=$_rootdir/$_lastfulldir/incr/$_lastincrdir > $_tmplog 2>&1
                        _checkbkok=$(tail -n 1 $_tmplog | grep "completed OK" | wc -l)
                        if [ $? -eq 0 ] && [ $_checkbkok -eq 1 ]; then
                                echo -e "bk-succeed !"
                                sleep 5
                                echo "incr-bk-succeed" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "completed OK|succeed" | xargs | sed 's/ /<-->/g' >> $_bklog/succ.log
                        else
                                echo -e "bk-error !"
                                sleep 5
                                echo "incr-bk-error" >> $_tmplog
                                cat $_tmplog | grep -v prints | grep -E "incr-bk-error" | xargs | sed 's/ /<-->/g' >> $_bklog/error.log
                        fi
                fi
        fi

fi






本文标签: 增量备份 自动化 mysql周期全备

内容版权声明:【蓝色网居】部分资源来源于网络,如有侵犯您的所有权,请随时告知我们,我们将立即删除!感谢配合!

转载请注明出处:https://blog.ff56.cn/zidonghua/1657938247.html


【手机扫一扫查看文本】

手机扫一扫 手机扫一扫查看文本 手机扫一扫





mysql周期全备 mysql数据库 自动化 项目代码