xtrabackupex 热备

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/Percona-XtraBackup-2.4.4
-rdf58cf2-el6-x86_64-bundle.tar
tar -xf  Percona-XtraBackup-2.4.4-rdf58cf2-el6-x86_64-bundle.tar
rpm -ivh   percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

wget  ftp://rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/libev-4.15-1.el6.rf.x86_64.rpm
rpm -ivh  libev-4.15-1.el6.rf.x86_64.rpm

 install numactl
 install perl-DBD-MySQL -y
 
#编辑备份脚本 注意磁盘目录空间是不是足够
mkdir -p  /opt/scripts/
cd  /opt/scripts/
touch hotbackup.sh
chmod 744  hotbackup.sh
mkdir /data/innobackupex_back -p

#编辑备份脚本 复制下面脚本到 hotbackup.sh
vim hotbackup.sh

#!/bin/sh
# lf
# 20160920
#crontab -e
#00 1 * * *  /opt/scripts/hotbackup.sh
# chmod 744 hotbackup.sh
#日志目录
homedir=/data/innobackupex_back/
#备份程序安装目录
#innobackupex=/data/mysql/xtrabackup
#MYSQL  my.cnf目录
#日志目录
basedir=/data/innobackupex_back/backdata/
#备份程序安装目录
#innobackupex=/data/mysql/xtrabackup
#MYSQL  my.cnf目录
CONF=/u01/app/mysql/db/etc/my.cnf
#备份用户
USER=backup
#密码
PASSWORD=backup_password
#host
HOST=192.168.111.211
#socket 目录
SOCKET=/data/mysql/mysql.sock
# tmpdir
#在使用参数stream=tar备份的时候,你的xtrabackup_logfile可能会临时放在/tmp目录下,如果你备份的时候并发写入较大的话
xtrabackup_logfile可能会很大(5G+),很可能会撑满你的/tmp目录,可
#以通过参数--tmpdir指定目录来解决这个问题。
DATE=`date +"%Y%m%d"`
FileSize=0
# 日志
innobackupexLog=/data/innobackupex_back/infolog.log
backlog=/data/innobackupex_back/blog.log
# 日志存放过期时间
MYSQL_BACKUP_EXPIRED_DAYS=7
BackPostUrl=xx
T_ServerId=xx

datadir=${basedir}/${DATE}_full
rm -rf ${datadir}
mkdir -p ${datadir}

#begin full backup 
/usr/bin/innobackupex --defaults-file=${CONF} --host=${HOST}  --user=${USER} --password=${PASSWORD} --socket=${SOCKET} --
no-timestamp --parallel=4 --slave-info ${datadir}   1>>${innobackupexLog} 2>&1
BakFlag=`tail -n 10 ${innobackupexLog} | grep "completed OK" | grep -v prints | wc -l`
if [ ${BakFlag} -eq 0 ];then
        echo "`date +"%Y-%m-%d %H:%M:%S"`:backup failed !">>${innobackupexLog}
        echo "`date +"%Y-%m-%d %H:%M:%S"` backup failed error !" >> ${backlog}
        backinfo=`tail -1 ${backlog}`
elif [ ${BakFlag} -eq 1 ];then
        echo "backup success!"
        #begin to recover
        echo "===============================================" >> ${innobackupexLog}
        echo "`date +"%Y-%m-%d %H:%M:%S"` Begin to Recover ..." >> ${innobackupexLog}
        echo "`date +"%Y-%m-%d %H:%M:%S"` back ok !" >> ${backlog}
        /usr/bin/innobackupex  --defaults-file=${CONF} --apply-log ${datadir}  1>>${innobackupexLog} 2>&1
        BakFlag=`tail -n 10 ${innobackupexLog} | grep "completed OK" | grep -v prints | wc -l`
        if [ ${BakFlag} -gt 0 ];then
                echo "`date +"%Y-%m-%d %H:%M:%S"` Recover is compeleted ok !" >> ${innobackupexLog}
                echo "`date +"%Y-%m-%d %H:%M:%S"` Recover ok !" >> ${backlog}
  echo "Recover success!"
               cd ${basedir}
 	       sync
                tar  -czvf ${DATE}_full.tar.gz ${DATE}_full>/dev/null 2>&1
 	       sync
 FileSize=`du -sh ${DATE}_full.tar.gz | awk '{print $1}'`
               rm -rf  ${DATE}_full
#rsync -vzrtopgP . svntransfer@192.168.7.200::backdata --password-file=/etc/rsyncd.pas

        #tar -zxvf 20171026_full.tar.gz 20171026_full
                #rsync --progress "-e ssh -p 22" -arzv ${datadir}.tar.gz  192.168.2.202:${datadir}.tar.gz
                #rsync -avz --progress --rsh=ssh  /home/mysql/back/backdata/20160920/20160920_full.tar.gz  
192.168.2.202:/home/mysql/back/20160920_full.tar.gz
        else
                echo "`date +"%Y-%m-%d %H:%M:%S"` Recover error !" >> ${backlog}
        fi
        backinfo=`tail -2 ${backlog}`
fi

#clean expired backup
find ${basedir} -maxdepth 1 -type f -mtime "+${MYSQL_BACKUP_EXPIRED_DAYS}" |xargs /bin/rm -fr
ZSIZE=`df -h / | awk '{print $4}' | sed -n '2p'`
#备份回传
curl -d  "T_ServerId=${T_ServerId}&BackUpInfo=${backinfo}&BackType=inno&FileSize=${FileSize}&ZSIZE=${ZSIZE}"  
${BackPostUrl}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值