innobackupex自动备份脚本(增量备份,自动压缩)

#!/bin/bash

#日期转为天数
function date2days {
    echo "$*" | awk ‘{
        z=int((14-$2)/12); y=$1+4800-z; m=$2+12*z-3;
        j=int((153*m+2)/5)+$3+y*365+int(y/4)-int(y/100)+int(y/400)-2472633;
        print j
    }‘
}

#说明:脚本执行策略为每天执行一次,执行前需要先建立config文件,并在config文件
#中添加
#backup_full=
#backup_pre_name=
#即可,注意路径。
#备份策略,每七天一个循环,第一天为全备份,第二天至第六天为增量备份。
#后续会增加已备份文件压缩转移定期删除部分 

#######################
db_user="root"
db_passwd=""
db_defaults_file="/home/backup/config/3306.cnf"
db_socket="/var/lib/mysql/mysql_3306.sock"
db_backup="/home/backup/"
db_backup_fulldir="/home/backup/full/"
db_backup_incrementaldir="/home/backup/incremental/"
db_backup_gzfull="/home/backup/gzip/"
db_backup_tarfull="/home/backup/tar.gzdb/"

#得到当前时间和配置文件
time="$(date +"back_%d-%m-%Y")"
source /home/backup/config/config

#计算今天到上次全备份相隔天数
_Day=$(date2days `echo ${backup_full:5:10}|awk ‘BEGIN{FS="-"}{print $3,$2,$1}‘`)
Day=$(date2days `date +"%Y %m %d"`)
echo $_Day
echo $Day
let result=$Day-$_Day
echo "相差$result天"

if [ -z ${backup_full} ] || [ $result -ge 7  ] ; then
#todo
echo ‘全备份‘
backup_full=${time}
innobackupex --defaults-file=$db_defaults_file --user=$db_user --password --no-timestamp  --socket=$db_socket ${db_backup_fulldir}${backup_full}/

#更新配置文件
echo "backup_full=${backup_full}" >/home/backup/config/config
echo "backup_pre_name=full/${backup_full}" >>/home/backup/config/config
#自动删除两周以前的备份文件
#获取本次全备份两周前的文件夹名称
time_rm_f_7="$(date -d "7 days ago" +"back_%d-%m-%Y")"
time_rm_i_6="$(date -d "6 days ago" +"back_%d-%m-%Y")"
time_rm_i_5="$(date -d "5 days ago" +"back_%d-%m-%Y")"
time_rm_i_4="$(date -d "4 days ago" +"back_%d-%m-%Y")"
time_rm_i_3="$(date -d "3 days ago" +"back_%d-%m-%Y")"
time_rm_i_2="$(date -d "2 days ago" +"back_%d-%m-%Y")"
time_rm_i_1="$(date -d "1 days ago" +"back_%d-%m-%Y")"

if test -d $db_backup_fulldir${time_rm_f_7}
then
    su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_f_7}_full.tar.gz ${db_backup_fulldir}${time_rm_f_7}"
    su - root -c  "rm -rf ${db_backup_fulldir}${time_rm_f_7}"
    echo "压缩目录rm $db_backup_fulldir${time_rm_f_7}" >>/home/backup/config/tar.log
    if test -d $db_backup_incrementaldir${time_rm_i_6}
    then

        su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_6}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_6}"
        su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_6}"
        echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_6}" >>/home/backup/config/tar.log
        if test -d $db_backup_incrementaldir${time_rm_i_5}
        then

            su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_5}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_5}"
            su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_5}"
            echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_5}" >>/home/backup/config/tar.log
            if test -d $db_backup_incrementaldir${time_rm_i_4}
            then

                su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_4}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_4}"
                su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_4}"
                echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_4}" >>/home/backup/config/tar.log
                if test -d $db_backup_incrementaldir${time_rm_i_3}
                then

                    su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_3}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_3}"
                    su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_3}"
                    echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_3}" >>/home/backup/config/tar.log
                    if test -d $db_backup_incrementaldir${time_rm_i_2}
                    then

                        su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_2}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_2}"
                        su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_2}"
                        echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_2}" >>/home/backup/config/tar.log
                        if test -d $db_backup_incrementaldir${time_rm_i_1}
                        then
                            su - root -c  "tar -czvf ${db_backup_tarfull}${time_rm_i_1}_increment.tar.gz ${db_backup_incrementaldir}${time_rm_i_1}"
                            su - root -c  "rm -rf ${db_backup_incrementaldir}${time_rm_i_1}"
                            echo "压缩目录rm $db_backup_incrementaldir${time_rm_i_1}" >>/home/backup/config/tar.log

                        fi
                    fi
                fi
            fi
        fi
    fi
else
   echo "两周前备份不存在" >>/home/backup/config/tar.log
fi
echo ‘全备份‘
else
#todo
echo ‘增量备份‘

innobackupex  --defaults-file=$db_defaults_file --socket=$db_socket --no-timestamp  --incremental ${db_backup_incrementaldir}${time}/ --incremental-basedir=${db_backup}${backup_pre_name}

#更新配置文件
echo "backup_full=${backup_full}" >/home/backup/config/config
echo "backup_pre_name=/incremental/${time}" >>/home/backup/config/config
echo ‘增量备份‘
fi

脚本使用说明

建立/home/backup目录

目录中包含 config full increment tar.gzdb 目录

再config目录中包含3306.cnf为配置文件 tar.log文件记录压缩记录

config文件包含当前备份文件名和全备份文件名,内容如下:

backup_full=back_27-10-2015
backup_pre_name=/incremental/back_28-10-2015

然后再crontab中配置每天晚上9点定时执行脚本即可

脚本备份说明

第一次执行为全备份,接下来六天为增量备份,下一次循环前会把全量和增量压缩移动到tar.gzdb文件夹中然后进行下一个周期

如果有不足的地方希望大家不吝赐教

时间: 2024-09-29 15:24:30

innobackupex自动备份脚本(增量备份,自动压缩)的相关文章

利用tar进行完全备份、增量备份、差异备份,并控制版本号,自动删除备份文件

因业务需求,需对一个目录进行定期备份,现在使用tar进行自动备份,计划每周一次完整备份,其他每天进行增量或者差异备份,所以写出下面的脚步通过指定参数来选择备份模式.备份文件只保留最近两个完整备份版本和附属的增量或差异备份版本. [[email protected] script]# ./backup.sh          Please select the backup or delete mode,[full|diff|incr|delete|help] [[email protected]

MySQL5.7.18 备份、Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份,数据导入导出

粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损坏的数据进行恢复和还原保证数据不丢失,最小程度地丢失需求改变:因需求改变而需要把数据还原到改变以前测试:测试新功能是否可用 --备份与恢复概述 根据备份的方法可以分为: 1.Hot Backup(热备) 2.Cold Backup(冷备) 3.Warm Backup(温备) Hot Backup是指

Percona Xtrabackup备份mysql (完整备份与增量备份)

Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM 的备份同样需要加表锁).XtraBackup支持所有的Percona Server.MySQL.MariaDB和Drizzle. XtraBackup优势 : 1.无需停止数据库进行InnoDB热备 2.增量备份MySQL 3.流压缩到传输到其它服务器 4.能比较容易地创建主从同步 5.备份MySQL时不会增大服务器

Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份)

原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份 同样需要加表锁).XtraBackup支持所有的Percona Server.MySQL.MariaDB和Drizzle. XtraBackup优势 : 1.无需停止数据库进行InnoDB热备 2.增量备份MySQL 3.流

Xtrabackup 备份大数据库(全量备份和增量备份)

Xtrabackup Xtrabackup是由percona开源的免费数据库热备份软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁): mysqldump备份方式是采用的逻辑备份,其最大的缺陷是备份和恢复速度较慢,如果数据库大于50G,mysqldump备份就不太适合. Xtrabackup优点 1)备份速度快,物理备份可靠 2)备份过程不会打断正在执行的事务(无需锁表) 3)能够基于压缩等功能节约磁盘空间和流量 4)自动备份校验 5

xtrabackup 全备份,增量备份,恢复 mysql数据库

Xtrabackup使用指南 InnoDB数据备份工具 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写,也就是不加锁),是商业备份工具InnoDB Hotbackup的一个很好的替代品 一.Xtrabackup介绍  A.Xtrabackup是什么 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup有两个主要的工具

Percona Xtrabackup备份mysql大数据库(完整备份与增量备份)

Percona Xtrabackup备份mysql大数据库(完整备份与增量备份) 文章目录 [隐藏] Xtrabackup简介 Xtrabackup安装 Xtrabackup工具介绍 innobackupex使用方法 完整备份及还原 增量备份及还原 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对InnoDB和XtraDB存储引擎的数据库非阻塞地备份(对于MyISAM的备份同样需要加表锁).XtraBackup支持所有的Percona

Centos 6.9 安装xtrabackup-2.4.8 通用包,yum安装,全量备份,增量备份

xtrabackup-2.4.8的安装及使用 ---Yum安装 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.html [[email protected] ~]# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm [[

xtrabackup实现全量备份和增量备份

mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/installation/yum_repo.htmlyum install http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpmyum list | grep per

MySQL备份与增量备份

MySQL备份与增量备份 01)MySQL备份常用参数 -B 1.会备份创建和删除库的语句:2.备份多个库: --compact 去注释,适合调试 gzip 压缩:# mysqldump -uroot -pqb123 -S /data/3306/mysql.sock -F -B --master-data=2 mydb|gzip > /server/backup/bak_$(date +%F).sql.gz -A 备份所有库 -F 刷新binlog日志 --master-data=1/2 增加b