日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 數(shù)據庫 > 數(shù)據庫應用 > xtrabackup自動還原腳本

xtrabackup自動還原腳本

來源:程序員人生   發(fā)布時間:2015-04-20 08:23:03 閱讀次數(shù):3846次
xtrabackup自動還原 ************************************************************************************************ 利用場景: ************************************************************************************************ 1.備份目錄為/backup/full和/backup/incre的架構,前者保存全備,后者保存增量備份 2.如全備為/backup/full/2015-04-08_15⑴4⑶3則將全備的目錄名2015-04-08_15⑴4⑶3 作為/backup/incre/下增量備份的目錄名。這樣設計的初衷在于只要全備不過期,那末 這個全備文件以后的增量備份也不過期. 3.還原時,腳本會自動找到最新的全備和最新全備命名的增量備份目錄,并將增量備份 依照前后順序利用日志到全備中,最后完成還原. ************************************************************************************************ 腳本 ************************************************************************************************ #!/bin/sh # # 使用方法: # ./restore.sh /增量備份父目錄 #ocpyang@126.com #NOTE:恢復開始前請確保mysql服務停止和數(shù)據和日志目錄清空,如 # 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 # 還原的時候使用的內存限制數(shù) 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 ⑵ $TMP_LOG | grep 'completed OK!'`" ] ; then echo "$INNOBACKUPEX命令履行失敗:"; echo echo "---------- $INNOBACKUPEX的毛病輸出 ----------" cat $TMP_LOG #保存1份備份的詳細日志 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處于運行狀態(tài),請關閉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 "數(shù)據庫還原開始于: $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 FULL=`ls -t $FULLBACKUP_DIR |head ⑴` FULLBACKUP=$FULLBACKUP_DIR/$FULL if [ ! -d $FULLBACKUP ]; then error "全備:$FULLBACKUP不存在." fi INCR=`ls -t $INCRBACKUP_DIR/$FULL/ | head ⑴` 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 " | sort -n `; do #判斷最新全備的lsn #check_full_file=`find $FULLBACKUP/ -mindepth 1 -maxdepth 1 -type d -printf "%P " | sort -nr | head ⑴` check_full_lastlsn=$FULLBACKUP/xtrabackup_checkpoints fetch_full_lastlsn=`grep -i "^last_lsn" ${check_full_lastlsn} |cut -d = -f 2` ######判斷增量備份中第1個增量備份的LSN check_incre_file=`find $PARENT_DIR/$FULL -mindepth 1 -maxdepth 1 -type d -printf "%P " | sort -n | head ⑴` 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 "數(shù)據庫還原中 ...請稍等" 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 "*****************************************" exit 0 fi END_RESTORE_TIME=`date +%F' '%T' '%w` echo "數(shù)據庫還原完成于: $END_RESTORE_TIME" exit 0 ************************************************************************************************ 履行結果: ************************************************************************************************ 履行結果以下: #./restore.sh /backup/incre/ ---------------------------- ./restore.sh: MySQL還原腳本 數(shù)據庫還原開始于: 2015-04-08 15:17:14 3 還原將從全備2015-04-08_15⑴4⑶3開始,到增量2015-04-08_15⑴6-06結束. Prepare:完全備份集........... ***************************** 完全備份的LSN: 62974601 增量備份的LSN: 124278446 Prepare:增量備份集2015-04-08_15⑴5⑵5........ ***************************** 完全備份的LSN: 124278446 增量備份的LSN: 185584722 Prepare:增量備份集2015-04-08_15⑴6-06........ ***************************** prepare:全備集回滾那些未提交的事務........... ***************************** 數(shù)據庫還原中 ...請稍等 ***************************** 1.恭喜,還原成功!. ***************************** 修改mysql目錄的權限. 2.權限修改成功! ***************************** 啟動本機mysql端口為:3306的服務 3.mysql啟動中....請稍等... 3.mysql啟動中....請稍等... 3.mysql啟動中....請稍等... mysql ****啟動成功****

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久99视频精品 | 亚洲欧美一区二区三区在线 | 69国产精品成人96视频色 | 圆产精品久久久久久久久久久 | 日韩在线视频中文字幕 | 亚洲成人一区二区 | 国产精品国产三级国产专播精品人 | 久久久久毛片 | 日韩欧美视频在线 | 成人天天干 | 中国一级毛片在线播放 | 亚洲综合一区二区 | 亚洲欧美视频 | 欧美精品成人 | 久久久久久成人精品 | 一级免费黄 | 在线观看视频一区 | 亚洲精品人人 | 久久99网 | 亚洲精品在线免费 | 国产成人一区二区 | 欧美一区二区三区在线观看 | 国产精品久久久久久影视 | 国产成人久久精品麻豆二区 | 国产成人一区 | 国产精彩视频 | 国产高清在线视频 | 另类激情视频 | 国产一区二区视频在线播放 | 91麻豆精品国产91久久久久久 | 日韩视频在线一区二区 | 国产一区二区三区在线观看免费 | 精品视频免费 | 亚洲欧洲成人精品av97 | 久久久无码精品亚洲日韩按摩 | 男女深夜网站 | 欧美精品在线一区 | 久久久精品在线 | 国产a视频 | 欧美一区二区在线视频 | 黄色美女免费网站 |