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
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點進行增量備份