标签:
先说下实际环境阿里云买的ESC跑的mysql服务,目前由于数据量过大,数据库目前有800多GB,每次全备需要等20多个小时才能够完成,然后就想到做增量备份,写下此文档
[root@localhost ~]# cat /etc/redhat-releaseCentOS release 6.2 (Final)[root@localhost ~]# mysql --versionmysql Ver 14.14 Distrib 5.5.20, for Linux (x86_64) using readline 5.1
软件名:percona-xtrabackup作用:针对Mysql数据库进行热备份,及增量备份,主要应用于innodb引擎
yum -y install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr bison libtool ncurses5-devel #安装依赖包yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm #安装percona YUM库yum -y install percona-xtrabackup.x86_64 #安装percona-xtrabackup
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE BACK_DIR_PATH# PASSWORD 数据库密码# DATE 数据库名# --database=DATE 针对所有库做备份去掉该选项即可# BACK_DIR_PATH 完全备份目录位置注:该命令执行后会在备份目录位置以当前时间为命名生成一个目录,备份的文件会备份到该目录中。例如2014-12-06_16-00-15
1. 首先需要备份数据库2. 停止数据库运行3. 删除数据库目录内所有文件4. 然后执行下列命令进行恢复innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --apply-log BACK_DIR_PATH/2014-12-06_16-00-15# PASSWORD 数据库密码# DATE 数据库名# BACK_DIR_PATH 完全备份目录位置
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --incremental-basedir=BACK_DIR_PATH/2014-12-06_16-00-15 --incremental BACK_DIR_ZENG_1# PASSWORD 数据库密码# DATE 数据库名# BACK_DIR_PATH 完全备份目录位置# BACK_DIR_ZENG_1 第一次增量备份目录位置# --incremental-basedir 该选项后面写的为第一次完整备份的路径注:此次增量备份是在第一次完整备份的基础之上进行的增量备份
innobackupex --defaults-file=/etc/my.cnf --user=root --password=PASSWORD --database=DATE --incremental-basedir=BACK_DIR_ZENG_1 --incremental BACK_DIR_ZENG_2# PASSWORD 数据库密码# DATE 数据库名# BACK_DIR_PATH 完全备份目录位置# BACK_DIR_ZENG_1 第一次增量备份目录位置# BACK_DIR_ZENG_2 第二次增量备份目录位置# --incremental-basedir 该选项后面写的为第一次增量备份的路径注:此次增量备份是在第一次增量备份的基础之上进行的第二次增量备份
同第二次增量备份
1、首先需要备份数据库2、停止数据库运行3、删除数据库目录内所有文件4、然后执行下列命令进行恢复innobackupex --apply-log --redo-only BACK_DIR_PATHinnobackupex --apply-log --redo-only BACK_DIR_PATH --incremental-dir=BACK_DIR_ZENG_1innobackupex --apply-log BACK_DIR_PATH --incremental-dir=BACK_DIR_ZENG_2# BACK_DIR_PATH 完全备份目录位置# BACK_DIR_ZENG_1 第一次增量备份目录位置# BACK_DIR_ZENG_2 第二次增量备份目录位置注: 如果只有2次增量备份则执行此条命令,如果有多次增量命令,则参照上一条命令
此脚本为一次全备+6次增备轮询#!/bin/shDATE=`date +%Y-%m-%d`BACKUP_DIR_PATH=/backup/dataFILE_CNF=/etc/my.cnfUSER_NAME=rootPASSWORD=rootDATEBASE=testBACK_LOG=$BACKUP_DIR_PATH/backup_cost_timeOUT_LOG=Xtrabackup_$DATE.logif [ -d "$BACKUP_DIR_PATH/rec6" ];thenmv $BACKUP_DIR_PATH $BACKUP_DIR_PATH-bakmkdir $BACKUP_DIR_PATHfiif [ ! -d "$BACKUP_DIR_PATH/full" ];thenSTART_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/fullecho "###start full backup at $START_DATE to directory full" >> $BACK_LOGecho "###start full backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE $BACKUP_DIR_PATH/full 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop full backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop full backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec1" ];thenBACKUP_FULL_PATH=`ls -l $BACKUP_DIR_PATH/full |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec1echo "###start 1 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 1 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/full/$BACKUP_FULL_PATH --incremental $BACKUP_DIR_PATH/rec1 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 1 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 1 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec2" ];thenBACKUP_REC1_PATH=`ls -l $BACKUP_DIR_PATH/rec1 |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec2echo "###start 2 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 2 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/rec1/$BACKUP_REC1_PATH --incremental $BACKUP_DIR_PATH/rec2 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 2 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 2 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec3" ];thenBACKUP_REC2_PATH=`ls -l $BACKUP_DIR_PATH/rec2 |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec3echo "###start 3 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 3 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/rec2/$BACKUP_REC2_PATH --incremental $BACKUP_DIR_PATH/rec3 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 3 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 3 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec4" ];thenBACKUP_REC3_PATH=`ls -l $BACKUP_DIR_PATH/rec3 |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec4echo "###start 4 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 4 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/rec3/$BACKUP_REC3_PATH --incremental $BACKUP_DIR_PATH/rec4 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 4 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 4 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec5" ];thenBACKUP_REC4_PATH=`ls -l $BACKUP_DIR_PATH/rec4 |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec5echo "###start 5 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 5 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/rec4/$BACKUP_REC4_PATH --incremental $BACKUP_DIR_PATH/rec5 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 5 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 5 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;elif [ ! -d "$BACKUP_DIR_PATH/rec6" ];thenBACKUP_REC5_PATH=`ls -l $BACKUP_DIR_PATH/rec5 |awk ‘/^d/ {print $NF}‘`START_DATE=`date +%Y-%m-%d_%H:%M:%S`mkdir $BACKUP_DIR_PATH/rec6echo "###start 6 incremental backup at $START_DATE to directory full" >> $BACK_LOGecho "###start 6 incremental backup at $START_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGinnobackupex --defaults-file=$FILE_CNF --user=$USER_NAME --password=$PASSWORD --database=$DATEBASE --incremental-basedir=$BACKUP_DIR_PATH/rec5/$BACKUP_REC5_PATH --incremental $BACKUP_DIR_PATH/rec6 2>>$BACKUP_DIR_PATH/$OUT_LOGSTOP_DATE=`date +%Y-%m-%d_%H:%M:%S`echo "###stop 6 incremental backup at $STOP_DATE to directory full" >> $BACKUP_DIR_PATH/$OUT_LOGecho "###stop 6 incremental backup at $STOP_DATE to directory full" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACK_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGecho "" >> $BACKUP_DIR_PATH/$OUT_LOGbreak;fi
标签:
原文地址:http://www.cnblogs.com/CongZhang/p/5300699.html