1. 程式人生 > >Xtrabackup的安裝使用,自動化備份指令碼

Xtrabackup的安裝使用,自動化備份指令碼

#!/bin/bash

#innobackupex 增量備份指令碼

##################################################################################

BACKUP_DATE=$(date +%Y-%m-%d_%H_%M_%S)

BACKUP_DIR=/data/mysql/backup

FULLBACKUP_PATH=$BACKUP_DIR/full

INCRBACKUP_PATH=$BACKUP_DIR/incr

BACKUP_LOG_PATH=$BACKUP_DIR/logs

BACKUP_KEEP_DAY=7

MYSQL_CONF=/etc/my.cnf

INNOBACKUPEX=/usr/local/xtrabackup/bin/innobackupex

MYSQL_CMD=/usr/bin/mysql

MYSQL_CONNECT="--host=****--user=**** --password=**** --port=3306"

MAIL_FROM="[email protected]`hostname`"

MAIL_TO="[email protected]"

MAIL_TO_ERROR="[email protected]"

error()

{

 echo "$1" 1>&2

 exit 1

}

#before the backup, check the system enviroment setting and mysql status and so on

mysql_backup_check()

{

    if [ ! -d $FULLBACKUP_PATH ];then

        mkdir -p $FULLBACKUP_PATH

    fi

    if [ ! -d $INCRBACKUP_PATH ];then

        mkdir -p $INCRBACKUP_PATH

    fi

    if [ ! -d $BACKUP_LOG_PATH ];then

        mkdir -p $BACKUP_LOG_PATH

    fi

    if [ ! -x $INNOBACKUPEX ];then

       error "$INNOBACKUPEX did not exists"

    fi

    if [ ! -x $MYSQL_CMD ];then

       error "mysql client did not exists!"

    fi

     mysql_status=`netstat -nl | awk 'NR>2{if ($4 ~ /.*:3306/) {print "Yes";exit 0}}'`

        if [ "$mysql_status" != "Yes" ];then

          error "MySQL did not start. please check it"

        fi

        if ! `echo 'exit' | $MYSQL_CMD -s $MYSQL_CONNECT` ; then

         error "please check the user and password is correct!"

        fi

}

xtra_backup()

{

  if [ $# = 2 ];then

        $INNOBACKUPEX --defaults-file=$MYSQL_CONF $MYSQL_CONNECT  --compress --compress-threads=8 --databases="yjk  yjk_mall_2_0" --no-timestamp  $1/full_$BACKUP_DATE>$2 2>&1

  elif [ $# = 3 ];then

        $INNOBACKUPEX  --defaults-file=$MYSQL_CONF $MYSQL_CONNECT --compress --compress-threads=8 --databases="yjk  yjk_mall_2_0" --no-timestamp --incremental  $1/incr_$BACKUP_DATE  --incremental-basedir $2 >$3 2>&1

  else

      error "the parameter is not correct"

  fi

}

lastest_fullback_dir()

{

    if [ -d $1 ]; then

        path=`ls -t $1 |head -n 1`

        if [  $path ]; then

            echo $path

        else

            error "lastest_fullback_dir(): 目錄為空,沒有最新目錄"

        fi

    else

        error "lastest_fullback_dir(): 目錄不存在或者不是目錄"

    fi

}

mysql_full_backup()

{

    xtra_backup  $FULLBACKUP_PATH $BACKUP_LOG_PATH/full_$BACKUP_DATE.log

    if [ "${PIPESTATUS[0]}" -ne 0 ]; then

        (echo "Subject: MySQL Backup Failed: MySQL Backup failed on `hostname`";

      cat ${BACKUP_LOG_PATH}/full_${BACKUP_DATE}.log;

    ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO}

    else

      (echo "Subject: MySQL Backup Success: MySQL Backup Succeed on `hostname`";

      cat ${BACKUP_LOG_PATH}/full_${BACKUP_DATE}.log;

    ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO}

    fi

    #cd $FULLBACKUP_PATH

    #ls -t | tail -n +$BACKUP_KEEP_DAY | xargs rm -rf

    find ${FULLBACKUP_PATH}  -mtime +$BACKUP_KEEP_DAY -name "*" -exec rm -rf {} \;

}

mysql_incr_backup()

{

  LATEST_FULL_BACKUP=`find $FULLBACKUP_PATH -mindepth 1 -maxdepth 1 -type d -printf "%P\n" | sort -nr | head -1`

  LATEST_FULL_BACKUP_TIME=`stat -c %Y $FULLBACKUP_PATH/$LATEST_FULL_BACKUP`

  if [ $LATEST_FULL_BACKUP ];then

        #不是第一次增量備份,以最新的增量備份目錄為base_dir

        xtra_backup $INCRBACKUP_PATH  $FULLBACKUP_PATH/`lastest_fullback_dir $FULLBACKUP_PATH`  $BACKUP_LOG_PATH/incr_$BACKUP_DATE.log

  else

        # the first incremental backup need do full backup first

         xtra_backup $FULLBACKUP_PATH  $BACKUP_LOG_PATH/full_$BACKUP_DATE.log

         if [ "${PIPESTATUS[0]}" -ne 0 ]; then

                        (echo "Subject: MySQL Backup Failed: MySQL Backup failed on `hostname`";

                   cat ${BACKUP_LOG_PATH}/incr_${BACKUP_DATE}.log;

                    ) | /usr/sbin/sendmail -O NoRecipientAction=add-to -f${MAIL_FROM} ${MAIL_TO}

            fi

  fi

  #cd ${INCRBACKUP_PATH}

  #ls -t | tail -n +$BACKUP_KEEP_DAY | xargs rm -rf

  find ${INCRBACKUP_PATH}  -mtime +$BACKUP_KEEP_DAY -name "*" -exec rm -rf {} \;

}

case $1 in

       full)

          mysql_backup_check

          mysql_full_backup

          ;;

        incr)

          mysql_backup_check

          mysql_incr_backup

          ;;

         *)

          echo "full backup"

          echo "incr backup"

          ;;

esac

相關推薦

Xtrabackup安裝使用,自動化備份指令碼

#!/bin/bash #innobackupex 增量備份指令碼 ################################################################################## BACKUP_DATE=$(date +%Y-%m-%d_%H_%M

Oracle 自動化備份指令碼

Oracle 日常RMAN備份指令碼,很基礎。但是對於多個需要備份的Oracle資料庫,可以很簡單實施,並利於後期批量狀態的查詢。 備份指令碼,基於linux,windows環境需要適當修改。主指令碼,會呼叫2,3步驟的rman.sql&status.sql $ more main.sh #

xtrabackup安裝及全備,增量備份,及恢復

關於 all 並且 -o use shutdown app 可靠 href xtrabackup特性:         1、支持熱備份         2、支持對InnoDB、MyISAM,xtradb存儲引擎的備份         3、備份過程快速、可靠         

rsync+shell指令碼完成自動化備份

因為知識有些零碎所以認真看,我們還是首先介紹一下什麼是rsync? rsync是linux系統下的資料映象備份工具。使用快速增量備份工具Remote Sync可以遠端同步,支援本地複製,或者與其他SSH、rsync主機同步。Rsync其實是一個遠端資料同步工具,可通過LAN

自動化部署指令碼(安裝jdk)

1.先得保證每一臺機器都安裝了scp: 如果沒有安裝則進行安裝: 安裝scp: scp是在安裝ssh的時候安裝的,是在ssh的客戶端軟體裡面的 yum list | grep ssh 安裝的是openssh-clients.x86_64 yum inst

備份恢復工具xtrabackup安裝和使用的記錄

一、安裝 提供的是在centos7上安裝的方法: 包下載: wget https://www.percona.com/downloads/percona-toolkit/2.2.6/RPM/percona-toolkit-2.2.6-1.noarch.rpm  (這個可能會用到,但我未使用到)

xtrabackup安裝部署配置 備份恢復

[[email protected] ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm [[email&

自動化安裝python的指令碼

一 功能需求 1 下載Python的原始碼 2 安裝Python需要的依賴庫 3 編譯安裝Python 二 虛擬碼版本 三 主要函式講解 1 os.system 功能:執行命令 返回:命令的返回值

xtrabackup全量,增量備份指令碼(拿走即用)

#!/bin/sh # add ling INNOBACKUPEX=innobackupex INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX TODAY=`date +%Y%m%d%H%M` USEROPTIONS="--user=user --password=1234

MySQL自動化(全量+增量)備份指令碼

文章轉自:http://www.it-hack.cn/forum.php?mod=viewthread&tid=220&extra=page%3D1一、MySQL的日常備份方案:全備+增量備份:1、週日凌晨三點進行全備;2、週一到週日增量備份。不是往常的週日全備份,週一到週六增量備份,這樣如果

mysql xtrabackup自動增量備份shell指令碼

#!/bin/sh #victory chen   INNOBACKUPEX=innobackupex INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX TODAY=`date +%Y%m%d%H%M%S` USEROPTIONS="--user

xtrabackup備份指令碼

說明:由於備份時使用--compress壓縮,所以恢復時會呼叫linux的qpress命令解壓,需要單獨安裝。下載:http://download.csdn.net/detail/u010587433/9518350 上傳伺服器後,新增執行許可權即可使用。否則在恢復時報找不

mysql備份xtrabackup安裝

一、資料庫備份種類 1、完全備份 這可能是大多數人常用的方式,它可以備份整個資料庫,包含使用者表、系統表、索引、檢視和儲存過程等所有資料庫物件。但是呢,它也需要花費更多的時間和空間, 所以,一般推薦一週做一次完全備份。 2、事務日誌備份 事務日誌是一個

sentos7原始碼編譯安裝mysql(指令碼自動化安裝

一、下載mysql安裝包https://dev.mysql.com/downloads/mysql/5.7.html#downloads選擇自己需要的版本,我這裡的是5.6.40版本二、在root根目錄寫安裝的指令碼vim mysql_install.sh#!/bin/bas

Centos下Oracle11gR2安裝教程與自動化配置指令碼

# 系統環境準備 ### 開發元件與依賴庫安裝 ![](https://img2020.cnblogs.com/blog/1480358/202010/1480358-20201009234306007-393743556.png) 安裝centos時選擇Server with GUI,右面的可以不勾選

使用Xtrabackup進行MySQL備份

mysql一、安裝1、簡介Xtrabackup是由percona提供的mysql數據庫備份工具,據官方介紹,這也是世界上惟一一款開源的能夠對innodb和xtradb數據庫進行熱備的工具。特點:(1)備份過程快速、可靠; (2)備份過程不會打斷正在執行的事務; (3)能夠基於壓縮等功能節約磁盤空間和流量; (

gitlab本地版的安裝備份

bsp help 多次 自己 代碼 oca tro sin ror 之前一直想安裝一個本地git系統,來管理自已的代碼,同時也做一套自已試煉CI的環境,一直忙著其他事,加上要搭環境等原因,就放下了,這兩天有點空,就趕緊先把這git搭好,因為要CI等,所以之前裝的單一的git

percona-xtrabackup安裝(一)

mysql備份、innobackupex、percona-xtrabackupLinux系統環境:Red Hat Enterprise Linux Server release 6.5 (Santiago)MySQL版本:5.7.9 Source distribution1. Install the Perc

XtraBackup全量備份與恢復MySQL數據

備份 mysql xtrabackup 防偽碼:沒有相當程度的孤獨是不可能有內心的平和。1、概述Percona XtraBackup(簡稱PXB)是 Percona 公司開發的一個用於 MySQL 數據庫物理熱備的備份工具,支持 MySQl(Oracle)、Percona Server 和 Mar

GitLab CE服務器安裝配置備份恢復升級註意項總結

gitlab ce服務器GitLab CE安裝安裝比較簡單,rpm直接在不同平臺安裝https://about.gitlab.com/installation/直接下載源包地址https://about.gitlab.com/downloads/archives/安裝 #yum install curl op