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(需要備份的資料庫名稱,根