设为首页 加入收藏

TOP

xtrabackup自动还原脚本(一)
2015-11-21 01:53:38 来源: 作者: 【 】 浏览:0
Tags:xtrabackup 自动 还原 脚本
xtrabackup自动还原

************************************************************************************************
应用场景:
************************************************************************************************

1.备份目录为/backup/full和/backup/incre的架构,前者保存全备,后者保存增量备份

2.如全备为/backup/full/2015-04-08_15-14-33则将全备的目录名2015-04-08_15-14-33
作为/backup/incre/下增量备份的目录名。这样设计的初衷在于只要全备不过期,那么
这个全备文件之后的增量备份也不过期.

3.还原时,脚本会自动找到最新的全备和最新全备命名的增量备份目录,并将增量备份
按照先后顺序应用日志到全备中,最后完成还原.

************************************************************************************************
脚本
************************************************************************************************
#!/bin/sh
#
# 使用方法:
# ./restore.sh /增量备份父目录
#ocpyang@126.com

#NOTE:恢复开始前请确保mysql服务停止以及数据和日志目录清空,如
# rm -rf /usr/local/mysql/innodb_data/*
# rm -rf /usr/local/mysql/data/*
# rm -rf /usr/local/mysql/mysql_logs/innodb_log/*


INNOBACKUPEX=innobackupex
INNOBACKUPEX_PATH=/usr/local/xtrabackup/bin/$INNOBACKUPEX
TMP_LOG="/var/log/restore.$$.log"
MY_CNF=/usr/local/mysql/my.cnf
BACKUP_DIR=/backup # 你的备份主目录
FULLBACKUP_DIR=$BACKUP_DIR/full # 全库备份的目录
INCRBACKUP_DIR=$BACKUP_DIR/incre # 增量备份的目录
MEMORY=4096M # 还原的时候使用的内存限制数
ERRORLOG=`grep -i "^log-error" $MY_CNF |cut -d = -f 2`
MYSQLD_SAFE=/usr/local/mysql/bin/mysqld_safe
MYSQL_PORT=3306


#############################################################################

#显示错误

#############################################################################

error()
{
    echo "$1" 1>&2
    exit 1
}

  

#############################################################################

# 检查innobackupex错误输出

#############################################################################

check_innobackupex_fail()
{
    if [ -z "`tail -2 $TMP_LOG | grep 'completed OK!'`" ] ; then
    echo "$INNOBACKUPEX命令执行失败:"; echo
    echo "---------- $INNOBACKUPEX的错误输出 ----------"
    cat $TMP_LOG
    #保留一份备份的详细日志
    logfiledate=restore.`date +%Y%m%d%H%M`.txt
    cat $TMP_LOG>/backup/$logfiledate  
    rm -f $TMP_LOG
    exit 1
  fi
}

 



# 选项检测
if [ ! -x $INNOBACKUPEX_PATH ]; then
  error "$INNOBACKUPEX_PATH在指定路径不存在,请确认是否安装或核实链接是否正确."
fi

  

if [ ! -d $BACKUP_DIR ]; then
  error "备份目录$BACKUP_DIR不存在."
fi

  

if [ $# != 1 ] ; then
  error "使用方法: $0 使用还原目录的绝对路径"
fi

  

if [ ! -d $1 ]; then
  error "指定的备份目录:$1不存在."
fi



PORTNUM00=`netstat -lnt|grep ${MYSQL_PORT}|wc -l`
if [ $PORTNUM00 = 1  ];
then
echo -e '\e[31m NOTE:------------------------------------------.\e[m' #红色
echo -e '\e[31m mysql处于运行状态,请关闭mysql. \e[m' #红色
echo -e '\e[31m NOTE:------------------------------------------.\e[m' #红色
exit 0
fi	



input_value=$1
intpu_res=`echo ${input_value%/*}` 



# Some info output
echo "----------------------------"
echo
echo "$0: MySQL还原脚本"
START_RESTORE_TIME=`date +%F' '%T' '%w`
echo "数据库还原开始于: $START_RESTORE_TIME"
echo





#PARENT_DIR=`dirname ${intpu_res}`
PARENT_DIR=${intpu_res}

if [ $PARENT_DIR = $FULLBACKUP_DIR ]; then
	FULLBACKUP=${intpu_res}
	echo "还原全备备份:`basename $FULLBACKUP`"
	echo

else
	if [ $PARENT_DIR = $INCRBACKUP_DIR ]; then
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongoDB的读书笔记(04)_【Replica.. 下一篇自作聪明的开发

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: