设为首页 加入收藏

TOP

xtrabackup自动还原脚本v2(一)
2015-11-21 01:52:09 来源: 作者: 【 】 浏览:3
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.还原时,脚本会自动找到最新的全备和最新全备命名的增量备份目录,并将增量备份
按照先后顺序应用日志到全备中,最后完成还原.


4.该版本增加了是否恢复所有增量备份,默认是全部增量备份.


************************************************************************************************
脚本
************************************************************************************************


#!/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不存在.请新建备份主目录$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

################判断还原增量备份部分还是所有################
ipname=''
read -p "输入截止增量备份名[默认所有]:" ipname
echo
echo "输入截止增量备份名为:$ipname"




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 ]; th
首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇遗传算法在走迷宫游戏中的应用 下一篇HBase写请求分析

评论

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