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=toot"
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
        rm -rf $FULLBACKUPDIR
fi

if [  -d $INCRBACKUPDIR ];then
        rm -rf $INCRBACKUPDIR
fi

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


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

/usr/bin/innobackupex  --defaults-file=$MYCNF --user=root --password=root --host=127.0.0.1  --port=3306  $FULLBACKUPDIR > $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` 
  # rm -f $TMPFILE
  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 $FULLBACKUPDIR
  tar -czvf -  $Filename  | openssl des3 -salt -k 123456 -out $Filename.tar.gz
  # tar -zcvf $TODAY.tar.gz ./full/ 
  ssh 192.168.117.130 mkdir /backup/$Filename
  scp -P 22 $Filename.tar.gz [email protected]:/backup/$Filename/$Filename.tar.gz
  # rm -rf $FULLBACKUPDIR

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

echo "completed: `date`"
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

XtraBackup備份與恢復MySQL數據

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

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

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

mysql 備份和增量備份

mysql備份mysql 全量備份:vim /root/mysql_bakup.sh #!/bin/bash#Date:2017/5/2#Author:wangpengtai#Blog:http://wangpengtai.blog.51cto.com#At Sunday, we will backup th

Mysql 通過備份和binlog恢復整體數據

mysql 通過全量備份和binlog恢復整體數據 某天工作時間,一個二貨犯暈登錯生產當測試環境了,直接drop了一個數據庫,需要緊急恢復!可利用備份的數據文件以及增量的 binlog 文件進行數據恢復。具體思路歸納幾點:1、恢復條件為 MySQL 要開啟 binlog 日誌功能,並且要全備和增量的所有

mysql備份與增量備份

mysql linux 1.全量備份 簡單的說就是將所有數據庫或一個庫全部備份。2.增量備份 從上一次全量備份之後到下一次全量備份之前都叫做增量備份。對於mysql,binlong日誌就是mysql數據,對binlong的備份就是對mysql的備份。備份的時候要鎖表,影響用戶

mysql備份及增量備份流程

日誌格式 --date nlog 超過 form 方式 basename ESS transacti 由於線上mysql數據量很大,天天進行全備份數據既浪費時間又占用資源,所以打算采用全量備份和增量備份結合的方式進行備份采用每周日全量備份、周一到周六增量備份的方式背景是從一

Mysql備份系列(3)--innobackupex備份mysql大資料(+增量)操作記錄

    在日常的linux運維工作中,大資料量備份與還原,始終是個難點。關於mysql的備份和恢復,比較傳統的是用mysqldump工具,今天這裡推薦另一個備份工具innobackupex。innobackupex和mysqldump都可以對mysql進行熱備份的,mys

mysql備份、增量備份實現方法

mysql全量備份、增量備份。開啟mysql的logbin日誌功能。在/etc/my.cnf檔案中加入以下程式碼: [mysqld] log-bin = "/home/mysql/logbin.log" binlog-format = ROW log-bin-index = "/home/

MySQL定時備份備份+增量備份

參考 zone7_ 的 實戰-MySQL定時備份系列文章 說明 產品上線後,資料非常非常重要,萬一哪天資料被誤刪,那麼就gg了,準備跑路吧。 所以要對線上的資料庫定時做全量備份和增量備份。 增量備份的優點是沒有重複資料,備份量不大,時間短。但缺點也很明顯,需要建立在上次完全備份及完全備份之後所有的增量才

mysql備份和增量備份

mysql全量備份指令碼 #!/bin/bash Data_back="/data/data_backup/"; Date=`date +"%Y_%m_%d"` mysqldump -uroot -proot --quick --events --flush-logs --single-trans

mysql 備份與增量備份指令碼

  全量備份 [[email protected] scripts]# cat wqbk.sh #!/bin/bash #use mysqldump to fully backup mysql data BakDir=/mnt/sata02/backup/wq

實戰-MySQL定時備份(1)

閱讀本文大約需要 5 分鐘 概要 引言 全量備份 恢復全量備份 定時備份 引言 在產品上線之後,我們的資料是相當重要的,容不得半點閃失,應該做好萬全的準備,搞不好哪一天被黑客入侵或者惡意刪除,那就 gg 了。所以要對我們的

Mysql 開啟bin-log並實現自動化增量和備份

思路:開啟 bin-log 來做增量,用 Mysqldump 做全量 1 開啟 bin-log 檢視是否開啟 binlog 進入mysql命令列介面,show variables like '%log_bin%'; 如果 log-bin 是 O

MySQL資料庫之+增量+二進位制日誌的備份與恢復

一、簡介資料的備份與恢復 1、為什麼備份? 災難恢復:人為錯誤、硬體故障(冗餘)、軟體故障(bug)、自然災害、黑客攻擊、誤操作、…; 測試; 2、備份時應該注意些什麼? 能容忍最多丟失多少資料; 恢復資料需要在多長時間內完成; 需要恢復哪些資料;

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

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

Xtrabackup 備份大資料庫(備份和增量備份

Xtrabackup Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB儲存引擎的資料庫非阻塞地備份(對於MyISAM的備份同樣需要加表鎖);mysqldump備份方式是採用的邏輯備份,其最大的缺陷是備份和恢復速度較

MySQL之——基於mysqldump備份還原

SQL格式備份還原 不帶--tab選項時,mysqldump輸出sql格式的標準輸出,包含CREATE及INSERT語句。 基本格式為: mysqldump [arguments] > file_name 1、 匯出全部資料庫及表 [[email p

MySQL innobackupex備份恢復

ann sql sta important 其他 fin rect exec -- 轉自 http://blog.itpub.net/27099995/viewspace-1295099/ 先簡單介紹一下這個工具:innobackupexinnobackupex比xta

備份與增量備份實踐

mysql數據庫全備及增備1.1 全備備份與恢復全備實踐#######################################################################################1、安裝Xtrabackup備份命令wget -O /etc/yum.repos