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点进行增量备份

你可能感兴趣的:(Xtrabackup全量与增量备份数据库)