"%P\n" | sort -n | head -1`
check_incre_lastlsn=$PARENT_DIR/$FULL/$i/xtrabackup_checkpoints
fetch_incre_lastlsn=`grep -i "^last_lsn" ${check_incre_lastlsn} |cut -d = -f 2`
echo "完全备份的LSN:${fetch_full_lastlsn} "
echo "增量备份的LSN:${fetch_incre_lastlsn} "
if [ "${fetch_incre_lastlsn}" -eq "${fetch_full_lastlsn}" ];then
echo "*****************************************"
echo "LSN不需要prepare!"
echo "*****************************************"
echo
break
else
echo "Prepare:增量备份集$i........"
echo "*****************************"
$INNOBACKUPEX_PATH --defaults-file=$MY_CNF --apply-log --redo-only --use-memory=$MEMORY $FULLBACKUP --incremental-dir=$PARENT_DIR/$FULL/$i > $TMP_LOG 2>&1
check_innobackupex_fail
fi
######判断LSN
check_full_lastlsn=$FULLBACKUP/xtrabackup_checkpoints
fetch_full_lastlsn=`grep -i "^last_lsn" ${check_full_lastlsn} |cut -d = -f 2`
echo "完全备份当前的LSN:${fetch_full_lastlsn}"
else
error "未知的备份类型"
fi
else
echo "查找增量备份文件完成."
check_full_lastlsn=$FULLBACKUP/xtrabackup_checkpoints
fetch_full_lastlsn=`grep -i "^last_lsn" ${check_full_lastlsn} |cut -d = -f 2`
echo -e "\e[31m -------------------------------------------- \e[m" #红色
echo -e "\e[31m 完全备份最终的LSN:${fetch_full_lastlsn} \e[m" #红色
echo -e "\e[31m -------------------------------------------- \e[m" #红色
break
fi
done
fi
#################判断还原增量备份部分还是所有################
fi
echo
echo "prepare:完整备份以及回滚那些未提交的事务..........."
$INNOBACKUPEX_PATH --defaults-file=$MY_CNF --apply-log --use-memory=$MEMORY $FULLBACKUP > $TMP_LOG 2>&1
check_innobackupex_fail
echo "*****************************"
echo "数据库还原中 ...请稍等"
echo "*****************************"
$INNOBACKUPEX_PATH --defaults-file=$MY_CNF --copy-back $FULLBACKUP > $TMP_LOG 2>&1
check_innobackupex_fail
rm -f $TMP_LOG
echo "1.恭喜,还原成功!."
echo "*****************************"
#修改目录权限
echo "修改mysql目录的权限."
mysqlcnf="/usr/local/mysql/my.cnf"
mysqldatadir=`grep -i "^basedir" $mysqlcnf |cut -d = -f 2`
`echo 'chown -R mysql:mysql' ${mysqldatadir}`
echo "2.权限修改成功!"
echo "*****************************"
#自动启动mysql
INIT_NUM=1
if [ ! -x $MYSQLD_SAFE ]; then
echo "mysql安装时启动文件未安装到$MYSQLD_SAFE或无执行权限"
exit 1 #0是执行成功,1是执行不成功
else
echo "启动本机mysql端口为:$MYSQL_PORT的服务"
$MYSQLD_SAFE --defaults-file=$MY_CNF > /dev/null &
while [ $INIT_NUM -le 8 ]
do
PORTNUM=`netstat -lnt|grep ${MYSQL_PORT}|wc -l`
echo "mysql启动中....请稍等..."
sleep 5
if [ $PORTNUM = 1 ];
then
echo -e "\e[32m mysql ****启动成功**** \e[m"
exit 0
fi
INIT_NUM=$(($INIT_NUM +1))
done
echo -e "\e[31m mysql启动失败或启动时间过长,请检查错误日志 `echo 'cat ' ${ERRORLOG}` \e[m"
echo "*****************************************"
exit 0
fi
END_RESTORE_TIME=`date +%F' '%T' '%w`
echo "数据库还原完成于: $END_RESTORE_TIME"
exit 0
************************************************************************************************
执行结果:
************************************************************************************************
# ./restore.sh /backup/incre/
输入截止增量备份名[默认所有]:2015-04-10_14-10-49
输入截止增量备份名为:2015-04-10_14-10-49
----------------------------
./restore.sh: MySQL还原脚本
数据库