1. 程式人生 > >mysql xtrabackup自動增量備份shell指令碼

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

#!/bin/sh
#victory chen
 
INNOBACKUPEX=innobackupex
INNOBACKUPEXFULL=/usr/bin/$INNOBACKUPEX
TODAY=`date +%Y%m%d%H%M%S`
USEROPTIONS="--user=root --password=root"
TMPFILE="/logs/mysql/innobackup_$TODAY.$$.tmp"
TMPFILEDIR="/logs/mysql/"
MYCNF=/etc/my.cnf
MYSQL=/usr/bin/mysql
MYSQLADMIN=/usr/bin/mysqladmin
BACKUPDIR=/backup 
# 備份的主目錄
FULLBACKUPDIR=$BACKUPDIR/full 
INCRBACKUPDIR=$BACKUPDIR/incr # 增量備份的目錄
# 全庫備份的目錄

# Grab start time
#############################################################################
# Display error message and exit
#############################################################################
error()
{
    echo "$1" 1>&2
    exit 1
}
 
# Check options before proceeding
if [ ! -x $INNOBACKUPEXFULL ]; then
  error "$INNOBACKUPEXFULL does not exist."
fi
 
if [ ! -d $BACKUPDIR ]; then
  error "Backup destination folder: $BACKUPDIR does not exist."
fi
 
if [ -z "`$MYSQLADMIN $USEROPTIONS status | grep 'Uptime'`" ] ; then
 error "HALTED: MySQL does not appear to be running."
fi
 
if ! `echo 'exit' | $MYSQL -s $USEROPTIONS` ; then
 error "HALTED: Supplied mysql username or password appears to be incorrect (not copied here for security, see script)."
fi


# Some info output
echo "----------------------------"
echo
echo "$0: MySQL backup script"
echo "started: `date`"
echo
 
# Create full and incr backup directories if they not exist.


if [ ! -d $FULLBACKUPDIR ]; then
        mkdir -pv $FULLBACKUPDIR
fi


if [ ! -d $TMPFILEDIR ];then
        mkdir -pv $TMPFILEDIR
fi

# find latest backup file

LATEST_FULL=`find $FULLBACKUPDIR -mindepth 1 -maxdepth 1 -type d -printf "%P\n"`
echo "LATEST_FULL=$LATEST_FULL" 
# TMPINCRDIR 以全域性備份的名字作為目錄存放增量備份
TMPINCRDIR=$INCRBACKUPDIR/$LATEST_FULL  #/backup/incr/2018-08-12_23-06-00
Fathername=`basename $TMPINCRDIR`
mkdir -p $TMPINCRDIR
BACKTYPE="incr"
# Find latest incremental backup.
LATEST_INCR=`find $TMPINCRDIR -mindepth 1 -maxdepth 1 -type d | sort -nr | head -1`
echo "LATEST_INCR=$LATEST_INCR"
#找最近一次增量備份 如果沒有就基於全量備份之上做增量備份
if [ ! $LATEST_INCR ] ; then
   INCRBASEDIR=$FULLBACKUPDIR/$LATEST_FULL
else
   INCRBASEDIR=$LATEST_INCR
fi
echo "Running new incremental backup using $INCRBASEDIR as base."
  
innobackupex --defaults-file=$MYCNF $USEROPTIONS --incremental $TMPINCRDIR  --incremental-basedir $INCRBASEDIR > $TMPFILE 2>&1
 
 

 # 如果這裡獲取這次備份的目錄  但是這裡使用打包的方法 獲取到的不是 #/backup/2018-08-11_23-28-46而是/backup是一個目錄 顯示的不是檔案無法判斷檔案是否建立成功 所以用下面的方法
THISBACKUP=`awk -- "/Backup created in directory/ { split( \\\$0, p, \"'\" ) ; print p[2] }" $TMPFILE`

if [ $? = 0 ] 
  then
  echo "THISBACKUP=$THISBACKUP"
  Filename=`basename $THISBACKUP`  #2018-08-13_02-25-18
  echo "Filename=$Filename"
  echo "Databases backed up successfully to: $THISBACKUP"
else
  echo "backup failed"
fi

if [ -n "`tail -1 $TMPFILE | grep 'completed OK!'`" ] ; then
 echo "$INNOBACKUPEX succeed:"
else
 echo "---------- ERROR OUTPUT from $INNOBACKUPEX ----------"
# cat $TMPFILE
rm -f $TMPFILE
 exit 1
fi

  
  cd $TMPINCRDIR
  tar -czvf -  $Filename  | openssl des3 -salt -k 123456 -out $TMPINCRDIR/$Filename.tar.gz
  # tar -zcvf $TODAY.tar.gz ./full/ 
  scp -P 22 $TMPINCRDIR/$Filename.tar.gz [email protected]:/backup/$Fathername/$Filename.tar.gz
  # rm -rf $FULLBACKUPDIR

  if [ $? = 0 ] 
  then
    echo "scp succeed"
    # rm -rf $BACKUPDIR/full 
  else
    echo "Error with scp."
  fi

exit 0
 

相關推薦

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

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

mysql 二進位制日誌增量備份sell指令碼

#function:MySQL增量備份指令碼 #version:1.0.0 #author:leiyuanxin #date:2018/10/26 #----------------------------------- #!/bin/sh exprot LANG=en_US.UTF-8 #設定時間

centos7 mysql自動備份 MySQL自動備份shell指令碼

MySQL自動備份shell指令碼   在資料庫的日常維護工作中,除了保證業務的正常執行以外,就是要對資料庫進行備份,以免造成資料庫的丟失,從而給企業帶來重大經濟損失。通常備份可以按照備份時資料庫狀態分為熱備和冷備,按照備份資料庫檔案的大小分為增量備份、差異備份和全量備份.一

mysql xtrabackup 自動全量備份 shell

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

Linux下Oracle資料庫自動備份Shell指令碼

1.在伺服器建立備份目錄,並賦予許可權 mkdir -p /backup/P_DATA  #新建shell指令碼存放路徑 mkdir -p /backup/P_DB_BACK  #新建Oracle資料庫備份目錄 chown -R oracle:oinstall /backup/P

mysql備份shell指令碼

#!/bin/sh # 備份保留時間 7天 BTIME=7 # 檔名 DATENAME=`date "+%Y-%m-%d_%H_%M"` # 備份目錄 _DIR="/data/" # 資料庫資訊 USER="root" PWD="123456" DATABASE="test" # 備份並

Linux MySQL資料庫備份shell指令碼

我們部署的伺服器常用是Linux系統。於是,為了保障資料安全,需要每隔一段時間,就對MySQL資料庫的資料進行備份。MySQL下的mysqldump命令,能讓我們有效的對想要的資料庫或者表進行備份。但由於這個操作具有間隔性和重複性,我們不可能每次手動去執行mysqldump命令來進行資料

自動定時備份刪除指令碼

任務:定時備份資料庫所有資料。           定時刪除7天以前的資料 指令碼如下: #!bin/bash dat=`date +%Y%m%d`     mysqldump -uroot -p10qu

mongodb資料備份shell指令碼

#!/bin/bash #by fuqiang #2018-09-06 mongoexport --host 122.xx.xx.13 --port 29019 --db wenshu --collection resultContent --username wenshu

shell連線mongodb 定時備份shell指令碼

#定時 備份 mongodb表 名稱特點 xxxx_1103_20180503 #!/bin/bash #備份xxxx xxx_1101_20180509 re=$(/root/tools_package/mongodb/bin/mongo xx.xx.xx.xx:xxxx/xxxx -u xxxx -p x

linux 下RMAN備份shell指令碼

       RMAN備份對於Oracle資料庫的備份與恢復簡單易用,成本低廉。對於使用非catalog方式而言,將RMAN指令碼嵌入到shell指令碼,然後再通過crontab來實現中小型資料庫資料庫備份無疑是首選。本文提供了一個簡單易用的基於linux shell下的RM

Linux下mysql資料庫自動定時備份

對於網遊來說,資料庫中的資料尤其重要,實際運營中通常會有DBA或者運維人員對資料庫中資料進行日常備份,防止伺服器宕機或硬碟損壞導致的資料丟失問題 1.建立備份目錄 cd /home/game mkdir backup cd backup2.建立備份shell指令碼 vi

Linux下mysql自動定時備份

yaml val dev 目錄 lang 自動 blank UNC -- 1、查看磁盤空間情況: 既然是定時備份,就要選擇一個空間充足的磁盤空間,避免出現因空間不足導致備份失敗,數據丟失的惡果! 存儲到當前磁盤這是最簡單,卻是最不推薦的;服務器有多塊硬盤,最好是把備份存放到

Ubuntu 設定桌布自動切換的shell指令碼

系統:ubuntu-16.04 右鍵桌面->更改桌面背景,如下圖所示,在右側縮圖中帶有小鐘表圖示的就表示為動態切換的桌布: 系統是通過讀取這個檔案來進行動態桌布切換的: /usr/share/backgrounds/contest/xenial.xml 檔

利用xtrabackup進行增量備份增量恢復的實驗

一.xtrabackup下載安裝 下載:http://www.percona.com/redir/downloads/XtraBackup 並解壓到/usr/local下: tar -xvf percona-xtrabackup-2.0.7-552.tar.gz -C /u

MYSQL資料庫自動定期備份和恢復工具

MYSQL資料庫備份主要有兩種方式: 1. 只備份資料,不備份資料機構。   SQL:   SELECT * FROM table_name INTO OUTFILE 'filepath'  FIELDS TERMINATED BY '|' ENCLOSED BY '"'

[Rman]Oracle Rman增量備份Level012指令碼

採用0221222增量備份策略,7天一個輪迴 也就是週日0級備份,周1 2 4 5 6 採用2級增量備份,周3採用1級增量備份 開啟控制檔案自動備份 CONFIGURE CONTROLFILE A

iOS工程自動打包 (Shell指令碼打包)

1 #!/bin/bash 2 3 #-------------------------------------------- 4 # 功能:編譯xcode專案並打ipa包 5 # 使用說明: 6 # 編譯project 7 # ipa-b

mysqldump 對Mysql資料庫 每天完全備份執行指令碼

備份思想:每天凌晨進行全備份, 保留最近一週的, 之前保留間隔10天的, 保留3個月以內的 建立 backup_mysql.sh 檔案 mysqldump -h localhost -u root  -p123 test > /opt/data/mysqlbak/t

shell指令碼 ----mysql備份使用mysqldump實現自動備份

指令碼如下: [[email protected] shell]# cat mysqldump.sh #!/bin/bash #定義變數user(資料庫使用者名稱),passwd(資料庫密碼),date(備份的時間標籤) #dbname(需要備份的資料庫名稱,根