mysql5.7使用xtrabackup自动备份与同步


概述:现有mysql主从结构,版本为mysql5.7 ,由于需要增加定期进行备份,但数据量原因,使用mysqldump速度太慢,比较费时间,故选用xtrabackup在从库上做物理全量备份【后期增加增量】和备份到目标备份服务器,备份速度快,还可增量,此演示中是全量备份脚本,下面是环境结构:

从库 -- 》 定时备份 《 == 》目标备份服务器拉取备份,完成后删除源备份 【ssh到从库服务器免密】


直接上初版备份脚本:

【从库服务器】:

#!/usr/bin/bash

_rootdir=/data/dbbk/autobk/
_bkdir=bk_`date +%Y%m%d`
_bkbin=/usr/bin/innobackupex
_mycnf=/etc/my.cnf
_myhost=127.0.0.1
_myuser=root
_mypwd='pwd123456'
_myport=3306
_bktmp=/tmp
_bkandsynclog=$_rootdir$_bkdir/mysqldata/bksynclog.md

if [ ! -d $_rootdir$_bkdir ]; then
        echo -e "$_bkdir no found ! be create !" >> $_bkandsynclog
        mkdir -p $_rootdir$_bkdir
        sleep 1
        $_bkbin --defaults-file=$_mycnf --no-timestamp --host=$_myhost --user=$_myuser --password=$_mypwd --port=$_myport --tmpdir=$
_bktmp $_rootdir$_bkdir
        if [ $? -eq 0 ] ; then
                _bknum=`find $_rootdir$_bkdir -type -f | wc -l`
                echo -e "备份已完成..!" >> $_bkandsynclog
                echo -e "$_bknum" > $_rootdir$_bkdir/mysqldata/bknum.md
        else
                echo -e "备份失败,请检查!" >> $_bkandsynclog
        fi
else
        echo -e "$_bkdir found !" >> $_bkandsynclog
        $_bkbin --defaults-file=$_mycnf --no-timestamp --host=$_myhost --user=$_myuser --password=$_mypwd --port=$_myport --tmpdir=$
_bktmp $_rootdir$_bkdir
        if [ $? -eq 0 ] ; then
                _bknum=`find $_rootdir$_bkdir -type -f | wc -l`
                echo -e "备份已完成..!" >> $_bkandsynclog
                echo -e "$_bknum" > $_rootdir$_bkdir/mysqldata/bknum.md
        else
                echo -e "备份失败,请检查!" >> $_bkandsynclog
        fi
fi


【目标备份服务器】:

#!/usr/bin/bash

_rootdir=/prod_dbbackup/dbbk/
_bkdir=bk_`date +%Y%m%d`
_syncbin=/usr/bin/rsync
_fromhost=172.31.84.236
_fromuser=root
_fromdir=/data/dbbk/autobk/$_bkdir/
_bkandsynclog=$_rootdir$_bkdir/mysqldata/bksynclog.md

if [ ! -d $_rootdir$_bkdir ]; then
        echo -e "$_bkdir no found ! be create !" >> $_bkandsynclog
        mkdir -p $_rootdir$_bkdir
        sleep 1
        $_syncbin -rvz --delete -e 'ssh -p 22 -i /root/.ssh/id_rsa' $_fromuser@$_fromhost:$_fromdir $_rootdir$_bkdir/
        if [ $? -eq 0 ] ; then
                _syncnum=`find $_rootdir$_bkdir -type -f | wc -l`
                echo -e "同步已完成..!" >> $_bkandsynclog
                echo -e "$_syncnum" > $_rootdir$_bkdir/mysqldata/syncnum.md
                sleep 3
                _bkchar=`cat $_rootdir$_bkdir/mysqldata/bknum.md`
                _syncchar=`cat $_rootdir$_bkdir/mysqldata/syncnum.md`
                _emptydir=/prod_dbbackup/dbbk/emptydir/
                if [ "$_bkchar" == "$_syncchar" ]; then
                        echo -e "sync true is all !" >> $_bkandsynclog
                        sleep 1
                        $_syncbin -rvz --delete -e 'ssh -p 22 -i /root/.ssh/id_rsa' $_emptydir $_fromuser@$_fromhost:$_fromdir
                else
                        echo -e "sync false!" >> $_bkandsynclog
                fi
        else
                echo -e "同步失败,请检查!" >> $_bkandsynclog
        fi
else
        echo -e "$_bkdir found !" >> $_bkandsynclog
        $_syncbin -rvz --delete -e 'ssh -p 22 -i /root/.ssh/id_rsa' $_fromuser@$_fromhost:$_fromdir $_rootdir$_bkdir/
        if [ $? -eq 0 ] ; then
                _syncnum=`find $_rootdir$_bkdir -type -f | wc -l`
                echo -e "同步已完成..!" >> $_bkandsynclog
                echo -e "$_syncnum" > $_rootdir$_bkdir/mysqldata/syncnum.md
                sleep 3
                _bkchar=`cat $_rootdir$_bkdir/mysqldata/bknum.md`
                _syncchar=`cat $_rootdir$_bkdir/mysqldata/syncnum.md`
                _emptydir=/prod_dbbackup/dbbk/emptydir/
                if [ "$_bkchar" == "$_syncchar" ]; then
                        echo -e "sync true is all !" >> $_bkandsynclog
                        sleep 1
                        $_syncbin -rvz --delete -e 'ssh -p 22 -i /root/.ssh/id_rsa' $_emptydir $_fromuser@$_fromhost:$_fromdir
                else
                        echo -e "sync false!" >> $_bkandsynclog
                fi
        else
                echo -e "同步失败,请检查!" >> $_bkandsynclog
        fi
fi


总结: 以上只是初版备份脚本,需要改进的地方还很多,在实际过程中将搭配增量备份同时进行,避免备份、恢复时间过长的问题。







本文标签: mysql5.7 xtrabackup 自动备份 同步

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

转载请注明出处:https://blog.ff56.cn/shujuku/1657870201.html


【手机扫一扫查看文本】

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





不停机 日志归档 general_log 方案 同步 增量备份 备份 redis3.0集群环境 三台机器 使用方法 mysql 情况处理 mysql慢日志 持久化 定时执行 增加从库 常用操作 5.7 增量恢复 redis安装 三主三从节点 慢查询 数据恢复 指定表 redis 自动备份 redis6.0 详细过程 dump操作 binlog