使用新版Xtrabackup2.4.12定時備份mysql/percona到遠程備份服務器

Xtrabackup怎麼安裝參考
廢話少說

#!/bin/bash 

#數據庫用戶名
dbuser='backup'
#數據庫用密碼
dbpasswd='123456'
#hosts
dbhost='127.0.0.1'
#日誌備份路徑
logpath='/home/xtrabackup'
#數據備份路徑
datapath='/home/xtrabackup'
# 用流備份,默認的臨時目錄都是系統的/tmp目錄,需要保證該目錄有足夠的空間,或指定--tmpdir選項
tmpdir='/home/xtrabackuptmp'
#遠程機器目標位置
remoteDir='/home/55data/'

backtime=`date +%Y%m%d%H%M%S`
echo "-------${backtime},${host}備份數據庫開始-------------" >> ${logpath}/log.log

xtrabackup --host=${dbhost} --user=${dbuser} --password=${dbpasswd} --backup --stream=tar --ftwrl-wait-timeout=10  --datadir=/var/lib/mysql  --tmpdir=${tmpdir} | pigz -9 -p 4 >${datapath}/${backtime}.tgz

endtime=`date +%Y%m%d%H%M%S`
if [ "$?" == 0 ];then
echo "${endtime},${host}數據庫備份完成" >> ${logpath}/log.log
else
#備份失敗則進行以下操作
echo "${endtime},${host}數據庫備份失敗!!" >> ${logpath}/log.log
fi
echo "${endtime},${host}備份數據庫結束" >> ${logpath}/log.log

#將壓縮文件傳輸到遠程服務器
scp ${datapath}/${backtime}.tgz [email protected]:${remoteDir}

filesize=`ls -l ${datapath}/${backtime}.tgz | awk '{ print $5/1024/1024 }'`  
echo "備份文件名:${datapath}/${backtime}.tgz,備份文件大小:${filesize}M" >> ${logpath}/log.log

#定時刪除
mvtime=`date +%Y%m%d%H%M%S`
#創建文件路徑
mkdir /home/rmmysqldata/${mvtime}

#從備份文件中移動過期文件到"回收站"
find /home/xtrabackup/ -type f -name "*.tgz" -mtime +1 -exec mv {} /home/rmmysqldata/${mvtime}/ \; > /dev/null 2>&1

#到回收站的目錄下刪除過期文件
rm -rf /home/rmmysqldata/${mvtime}

if [ "$?" == 0 ];then
cleartime=`date +%Y%m%d%H%M%S`
echo "${cleartime},歷史數據清理結束" >> ${logpath}/log.log
else
#備份失敗則進行以下操作
echo "${cleartime},歷史數據清理失敗" >> ${logpath}/log.log

fi


#判斷備份文件夾大小
datafilesize=`du -s -h ${datapath}`  
echo "${datapath}文件大小:${datafilesize}" >> ${logpath}/log.log

#循環判斷分區使用率是否超過80%
percent=`df -k | grep -v Filesystem| awk '{print int($5)}'`
 
for each_one in $percent
do
        #判斷使用率是否超過90%
        if [ $each_one -ge 80 ];then
                #如果超過80 則把使用情況
                echo "磁盤使用:${each_one}" >> ${logpath}/log.log
        fi
done

說明

  1. 這裏用到pigz 這個壓縮工具比較快 但是也很消耗資源 大家可以根據實際情況考慮是否要使用
  2. 使用流式壓縮可以直接不佔用本地空間 直接傳輸到遠程機器我這裏是先本地備份在傳輸 是爲了加快備份 本地磁盤空間也夠用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章