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}