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
說明
- 這裏用到pigz 這個壓縮工具比較快 但是也很消耗資源 大家可以根據實際情況考慮是否要使用
- 使用流式壓縮可以直接不佔用本地空間 直接傳輸到遠程機器我這裏是先本地備份在傳輸 是爲了加快備份 本地磁盤空間也夠用