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