Xtrabackup全量與增量備份數據庫


 

Xtrabackup全量備份腳本:

1、全量備份腳本

[root@centos7 ~]# cat fullback_mysql.sh
#!/bin/bash
user=root
passwd=centos
DATE=`date +"%Y/%W/%w/%F-%T"` # 定義備份目錄日期,創建的目錄有年、月、周分別的目錄及全量日期的目錄
fullback=/backup/full/$DATE # 定義全量備份目錄
[ ! -d $fullback ] && mkdir $fullback -p  # 判斷目錄不存在為真,為真就創建目錄
xtrabackup  --user=$user --password=$passwd   --backup  --target-dir=$fullback &> /tmp/mysql # 進行全量備份,並將備份信息指定到文件中
egrep ".* Backup created in directory.*" /tmp/mysql >> /backup/full/complete.info  # 過濾出當前創建的目錄路徑,方便在增量時可以確定上一級全備份的目錄。
scp -rp $fullback 192.168.7.101:/fullback    # 將備份的全量數據傳到另外一個主機上。
find $fullback/  -ctime +30 -type d -exec rm {} \;  # 刪除超過30天的備份數據信息。

 2、啟動crond以及開機自啟動crond

# systemctl start crond
# systemctl enable crond

3、腳本加上執行權限

# chmod +x fullback.sh

4、定義計划任務執行腳本

每周日的凌晨4點執行全量備份數據庫

[root@centos7 ~]# crontab -e  
0 4 * * 0  /root/fullback.sh

Xtrabackup增量備份腳本: 

1、增量備份腳本:

[root@centos7 ~]# cat incr.sh
#!/bin/bash
user=root
passwd=centos
DATE=`date +"%Y/%W/%w/%F-%T"`
inc1back=/backup/inc1/$DATE 
BASE_DIR=$(tail -1 /backup/full/complete.info | cut -d\' -f2) # 基於全量備份的基礎上,導入的complete.info有全量備份的目錄路徑信息,將前面的全量備份目錄提取出來。
[ ! -d $inc1back ] && mkdir $inc1back  -p # 判斷目錄不存在為真,就創建新增目錄
xtrabackup  --user=$user   --password=$passwd   --backup  --target-dir=$inc1back       --incremental-basedir=$BASE_DIR # 指定上一個全量備份目錄的路徑。
xtrabackup  --user=$user   --password=$passwd   --prepare  --apply-log-only            --target-dir=$BASE_DIR  # 整合全量備份目錄
xtrabackup  --user=$user   --password=$passwd   --prepare  --target-dir=$BASE_DIR --incremental-dir=$inc1back  # 基於全量備份目錄進行整合增量備份目錄
scp -rp $inc1back  192.168.7.101:/inc1back  # 備份到遠程主機的目錄下
find $inc1back/  -ctime +30 -type d -exec rm {} \;  # 刪除30天以前的數據

2、定義計划任務:

[root@centos7 ~]# crontab -e
0 4 * * 0  /root/fullback.sh
0 4 * * 1-6  /root/incr.sh    # 每周1-6的凌晨4點進行增量備份


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM