设为首页 加入收藏

TOP

xtrabackup自动还原脚本(二)
2015-11-21 01:53:38 来源: 作者: 【 】 浏览:1
Tags:xtrabackup 自动 还原 脚本
FULL=`ls -t $FULLBACKUP_DIR |head -1` FULLBACKUP=$FULLBACKUP_DIR/$FULL if [ ! -d $FULLBACKUP ]; then error "全备:$FULLBACKUP不存在." fi INCR=`ls -t $INCRBACKUP_DIR/$FULL/ | head -1` echo "还原将从全备$FULL开始,到增量$INCR结束." echo echo "Prepare:完整备份集..........." echo "*****************************" $INNOBACKUPEX_PATH --defaults-file=$MY_CNF --apply-log --redo-only --use-memory=$MEMORY $FULLBACKUP > $TMP_LOG 2>&1 check_innobackupex_fail # Prepare增量备份集,即将增量备份应用到全备目录中,按照增量备份顺序即按照时间从旧到最新 for i in `find $PARENT_DIR/$FULL -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -n `; do #判断最新全备的lsn #check_full_file=`find $FULLBACKUP/ -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1` check_full_lastlsn=$FULLBACKUP/xtrabackup_checkpoints fetch_full_lastlsn=`grep -i "^last_lsn" ${check_full_lastlsn} |cut -d = -f 2` ######判断增量备份中第一个增量备份的LSN check_incre_file=`find $PARENT_DIR/$FULL -mindepth 1 -maxdepth 1 -type d -printf "%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 if [ $INCR = $i ]; then break fi fi ######判断LSN done else error "未知的备份类型" fi fi 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 6 ] do PORTNUM=`netstat -lnt|grep ${MYSQL_PORT}|wc -l` echo "mysql启动中....请稍等..." sleep 5 if [ $PORTNUM = 1 ]; then echo "mysql ****启动成功****" exit 0 fi INIT_NUM=$(($INIT_NUM +1)) done echo -e "mysql启动失败或启动时间过长,请检查错误日志 `echo 'cat ' ${ERRORLOG}`" echo "*****************
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mongoDB的读书笔记(04)_【Replica.. 下一篇自作聪明的开发

评论

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