中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

xtrabackup自動備份腳本

2018-07-20    來源:open-open

容器云強(qiáng)勢上線!快速搭建集群,上萬Linux鏡像隨意使用
    #backup.sh  
    #!/bin/sh  
    #on xtrabackup 2.2.8  
    # 第一次執(zhí)行它的時候它會檢查是否有完全備份,否則先創(chuàng)建一個全庫備份  
    # 當(dāng)你再次運(yùn)行它的時候,它會根據(jù)腳本中的設(shè)定來基于之前的全備或增量備份進(jìn)行增量備份  
    #ocpyang@126.com  
      
    INNOBACKUPEX_PATH=innobackupex  #INNOBACKUPEX的命令  
    INNOBACKUPEXFULL=/usr/local/xtrabackup/bin/$INNOBACKUPEX_PATH  #INNOBACKUPEX的命令路徑  
      
    #mysql目標(biāo)服務(wù)器以及用戶名和密碼  
    MYSQL_CMD="--host=192.168.5.189 --user=root --password=password --port=3306"    
      
    MYSQL_UP=" --user=root --password='password' --port=3306 "  #mysqladmin的用戶名和密碼  
      
    TMPLOG="/tmp/innobackupex.$$.log"  
      
    MY_CNF=/usr/local/mysql/my.cnf #mysql的配置文件  
      
    MYSQL=/usr/bin/mysql  
      
    MYSQL_ADMIN=/usr/bin/mysqladmin  
      
    BACKUP_DIR=/backup # 備份的主目錄  
      
    FULLBACKUP_DIR=$BACKUP_DIR/full # 全庫備份的目錄  
      
    INCRBACKUP_DIR=$BACKUP_DIR/incre # 增量備份的目錄  
      
    FULLBACKUP_INTERVAL=86400 # 全庫備份的間隔周期,時間:秒  
      
    KEEP_FULLBACKUP=1 # 至少保留幾個全庫備份  
      
    logfiledate=backup.`date +%Y%m%d%H%M`.txt  
      
    #開始時間  
    STARTED_TIME=`date +%s`  
      
      
      
    #############################################################################  
      
    # 顯示錯誤并退出  
      
    #############################################################################  
      
    error()  
    {  
        echo "$1" 1>&2  
        exit 1  
    }  
      
       
      
    # 檢查執(zhí)行環(huán)境  
      
    if [ ! -x $INNOBACKUPEXFULL ]; then  
      error "$INNOBACKUPEXFULL未安裝或未鏈接到/usr/bin."  
    fi  
      
       
      
    if [ ! -d $BACKUP_DIR ]; then  
      error "備份目標(biāo)文件夾:$BACKUP_DIR不存在."  
    fi  
      
       
      
    mysql_status=`netstat -nl | awk 'NR>2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'`  
      
    if [ "$mysql_status" != "Yes" ];then  
        error "MySQL 沒有啟動運(yùn)行."  
    fi  
      
      
      
       
      
    if ! `echo 'exit' | $MYSQL -s $MYSQL_CMD` ; then  
     error "提供的數(shù)據(jù)庫用戶名或密碼不正確!"  
    fi  
      
       
      
    # 備份的頭部信息  
      
    echo "----------------------------"  
    echo  
    echo "$0: MySQL備份腳本"  
    echo "開始于: `date +%F' '%T' '%w`"  
    echo  
      
       
      
    #新建全備和差異備份的目錄  
      
    mkdir -p $FULLBACKUP_DIR  
    mkdir -p $INCRBACKUP_DIR  
      
      
      
    #查找最新的完全備份  
    LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`  
      
       
      
    # 查找最近修改的最新備份時間  
      
    LATEST_FULL_BACKUP_CREATED_TIME=`stat -c %Y $FULLBACKUP_DIR/$LATEST_FULL_BACKUP`  
      
      
    #如果全備有效進(jìn)行增量備份否則執(zhí)行完全備份  
    if [ "$LATEST_FULL_BACKUP" -a `expr $LATEST_FULL_BACKUP_CREATED_TIME + $FULLBACKUP_INTERVAL + 5` -ge $STARTED_TIME ] ; then  
        # 如果最新的全備未過期則以最新的全備文件名命名在增量備份目錄下新建目錄  
        echo -e "完全備份$LATEST_FULL_BACKUP未過期,將根據(jù)$LATEST_FULL_BACKUP名字作為增量備份基礎(chǔ)目錄名"  
        echo "                     "  
        NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP  
        mkdir -p $NEW_INCRDIR  
      
        # 查找最新的增量備份是否存在.指定一個備份的路徑作為增量備份的基礎(chǔ)  
        LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n"  | sort -nr | head -1`  
            if [ ! $LATEST_INCR_BACKUP ] ; then  
                INCRBASEDIR=$FULLBACKUP_DIR/$LATEST_FULL_BACKUP  
                echo -e "增量備份將以$INCRBASEDIR作為備份基礎(chǔ)目錄"  
                echo "                     "  
            else  
                INCRBASEDIR=$INCRBACKUP_DIR/${LATEST_FULL_BACKUP}/${LATEST_INCR_BACKUP}  
                echo -e "增量備份將以$INCRBASEDIR作為備份基礎(chǔ)目錄"  
                echo "                     "  
            fi  
      
        echo "使用$INCRBASEDIR作為基礎(chǔ)本次增量備份的基礎(chǔ)目錄."  
        $INNOBACKUPEXFULL --defaults-file=$MY_CNF --use-memory=4G $MYSQL_CMD --incremental $NEW_INCRDIR --incremental-basedir $INCRBASEDIR > $TMPLOG 2>&1  
      
        #保留一份備份的詳細(xì)日志  
      
        cat $TMPLOG>/backup/$logfiledate  
      
        if [ -z "`tail -1 $TMPLOG | grep 'innobackupex: completed OK!'`" ] ; then  
         echo "$INNOBACKUPEX命令執(zhí)行失敗:"; echo  
         echo -e "---------- $INNOBACKUPEX_PATH錯誤 ----------"  
         cat $TMPLOG  
         rm -f $TMPLOG  
         exit 1  
        fi  
      
        THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG`  
        rm -f $TMPLOG  
      
      
        echo -n "數(shù)據(jù)庫成功備份到:$THISBACKUP"  
        echo  
      
        # 提示應(yīng)該保留的備份文件起點(diǎn)  
      
        LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`  
      
        NEW_INCRDIR=$INCRBACKUP_DIR/$LATEST_FULL_BACKUP  
      
        LATEST_INCR_BACKUP=`find $NEW_INCRDIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n"  | sort -nr | head -1`  
      
        RES_FULL_BACKUP=${FULLBACKUP_DIR}/${LATEST_FULL_BACKUP}  
      
        RES_INCRE_BACKUP=`dirname ${INCRBACKUP_DIR}/${LATEST_FULL_BACKUP}/${LATEST_INCR_BACKUP}`  
      
        echo  
        echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' #紅色  
        echo -e "必須保留$KEEP_FULLBACKUP份全備即全備${RES_FULL_BACKUP}和${RES_INCRE_BACKUP}目錄中所有增量備份."  
        echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' #紅色  
        echo  
      
      
      
    else  
        echo  "*********************************"  
        echo -e "正在執(zhí)行全新的完全備份...請稍等..."  
        echo  "*********************************"  
        $INNOBACKUPEXFULL --defaults-file=$MY_CNF  --use-memory=4G  $MYSQL_CMD $FULLBACKUP_DIR > $TMPLOG 2>&1   
        #保留一份備份的詳細(xì)日志  
      
        cat $TMPLOG>/backup/$logfiledate  
      
      
        if [ -z "`tail -1 $TMPLOG | grep 'innobackupex: completed OK!'`" ] ; then  
         echo "$INNOBACKUPEX命令執(zhí)行失敗:"; echo  
         echo -e "---------- $INNOBACKUPEX_PATH錯誤 ----------"  
         cat $TMPLOG  
         rm -f $TMPLOG  
         exit 1  
        fi  
      
           
        THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPLOG`  
        rm -f $TMPLOG  
      
        echo -n "數(shù)據(jù)庫成功備份到:$THISBACKUP"  
        echo  
      
        # 提示應(yīng)該保留的備份文件起點(diǎn)  
      
        LATEST_FULL_BACKUP=`find $FULLBACKUP_DIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`  
      
        RES_FULL_BACKUP=${FULLBACKUP_DIR}/${LATEST_FULL_BACKUP}  
      
        echo  
        echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' #紅色  
        echo -e "無增量備份,必須保留$KEEP_FULLBACKUP份全備即全備${RES_FULL_BACKUP}."  
        echo -e '\e[31m NOTE:---------------------------------------------------------------------------------.\e[m' #紅色  
        echo  
      
    fi  
      
      
      
      
      
      
    #刪除過期的全備  
      
    echo -e "find expire backup file...........waiting........."  
    echo -e "尋找過期的全備文件并刪除">>/backup/$logfiledate  
    for efile in $(/usr/bin/find $FULLBACKUP_DIR/ -mtime +6)  
    do  
        if [ -d ${efile} ]; then  
        rm -rf "${efile}"  
        echo -e "刪除過期全備文件:${efile}" >>/backup/$logfiledate  
        elif [ -f ${efile} ]; then  
        rm -rf "${efile}"  
        echo -e "刪除過期全備文件:${efile}" >>/backup/$logfiledate  
        fi;  
          
    done  
      
    if [ $? -eq "0" ];then  
       echo  
       echo -e "未找到可以刪除的過期全備文件"  
    fi  
      
      
      
    echo  
    echo "完成于: `date +%F' '%T' '%w`"  
    exit 0  
      
      
      
      
      
    -------------------------執(zhí)行結(jié)果如:  
    Warning: Using a password on the command line interface can be insecure.  
    ----------------------------  
      
      
    ./backup.sh: MySQL備份腳本  
    開始于: 2015-04-03 16:35:11 5  
      
      
    *********************************  
    正在執(zhí)行全新的完全備份...請稍等...  
    *********************************  
    數(shù)據(jù)庫成功備份到:/backup/full/2015-04-03_16-35-11  
      
      
     NOTE:---------------------------------------------------------------------------------.  
    無增量備份,必須保留1份全備即全備/backup/full/2015-04-03_16-35-11.  
     NOTE:---------------------------------------------------------------------------------.  
      
      
    find expire backup file...........waiting.........  
      
      
    未找到可以刪除的過期全備文件  
      
      
    完成于: 2015-04-03 16:35:25 5  
    ./backup.sh: MySQL備份腳本  
    開始于: 2015-04-03 16:35:50 5  
      
      
    完全備份2015-04-03_16-35-11未過期,將根據(jù)2015-04-03_16-35-11名字作為增量備份基礎(chǔ)目錄名  
    <span style="white-space:pre">                    </span>     
    增量備份將以/backup/full/2015-04-03_16-35-11作為備份基礎(chǔ)目錄  
    <span style="white-space:pre">                    </span>     
    使用/backup/full/2015-04-03_16-35-11作為基礎(chǔ)本次增量備份的基礎(chǔ)目錄.  
    數(shù)據(jù)庫成功備份到:/backup/incre/2015-04-03_16-35-11/2015-04-03_16-35-50  
      
      
     NOTE:---------------------------------------------------------------------------------.  
    必須保留1份全備即全備/backup/full/2015-04-03_16-35-11和/backup/incre/2015-04-03_16-35-11目錄中所有增量備份.  
     NOTE:---------------------------------------------------------------------------------.  
      
      
    find expire backup file...........waiting.........  
      
      
    未找到可以刪除的過期全備文件  

標(biāo)簽: Mysql 服務(wù)器 腳本 數(shù)據(jù)庫

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Java實(shí)現(xiàn)打字練習(xí)的代碼

下一篇:HttpClient4 設(shè)置代理