#!/bin/bash

#日期转为天数
function date2days {
echo "$*" | awk '{
z=int((-$)/); y=$+-z; m=$+*z-;
j=int((*m+)/)+$+y*+int(y/)-int(y/)+int(y/)-;
print j
}'
} #说明:脚本执行策略为每天执行一次,执行前需要先建立config文件,并在config文件
#中添加
#backup_full=
#backup_pre_name=
#即可,注意路径。
#备份策略,每七天一个循环,第一天为全备份,第二天至第六天为增量备份。
#后续会增加已备份文件压缩转移定期删除部分 #######################
db_user="xtrabackup"
db_passwd="mysQlbackup"
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/"
rm_num= #用于压缩并转移源文件
move_and_tar (){
if [ $# != ]; then
echo "参数不正确"
exit
fi time_rm=`date -d "$1 days ago" +"back_%d-%m-%Y"` if [ $ -eq ]; then
if [ -d ${db_backup_fulldir}${time_rm} ]; then
su - root -c "tar -czPvf ${db_backup_tarfull}${time_rm}_full.tar.gz ${db_backup_fulldir}${time_rm}"
su - root -c "rm -rf ${db_backup_fulldir}${time_rm}"
echo "压缩目录rm $db_backup_fulldir${time_rm}" >>/home/backup/config/tar.log
fi
fi if [ $ -gt -a $ -lt ]; then
if [ -d $db_backup_incrementaldir${time_rm} ]; then
su - root -c "tar -czPvf ${db_backup_tarfull}${time_rm}_increment.tar.gz ${db_backup_incrementaldir}${time_rm}"
su - root -c "rm -rf ${db_backup_incrementaldir}${time_rm}"
echo "压缩目录rm $db_backup_incrementaldir${time_rm}" >>/home/backup/config/tar.log
fi
fi
} #得到当前时间和配置文件
time="$(date +"back_%d-%m-%Y")"
source /home/backup/config/config #计算今天到上次全备份相隔天数
_Day=$(date2days `echo ${backup_full::}|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 ] ; then
#todo
echo '全备份'
backup_full=${time}
innobackupex --defaults-file=$db_defaults_file --no-timestamp --user=${db_user} --password=${db_passwd} --no-lock --socket=$db_socket ${db_backup_fulldir}${backup_full}/ if [ $? -eq ]; then
echo "${time} 备份成功!!!" >> /home/backup/config/results.log
else
echo "${time} 备份失败???" >> /home/backup/config/results.log
fi #更新配置文件
echo "backup_full=${backup_full}" >/home/backup/config/config
echo "backup_pre_name=full/${backup_full}" >>/home/backup/config/config #自动删除两周以前的备份文件
while [ ${rm_num} -lt -a ${rm_num} -gt ]
do
move_and_tar ${rm_num}
rm_num=`expr ${rm_num} - `
done echo '全备份'
else
#todo
echo '增量备份' innobackupex --defaults-file=$db_defaults_file --socket=$db_socket --no-timestamp --user=${db_user} --password=${db_passwd} --no-lock --incremental ${db_backup_incrementaldir}${time}/ --incremental-basedir=${db_backup}${backup_pre_name} if [ $? -eq ]; then
echo "${time} 增量备份成功!!!" >> /home/backup/config/results.log
else
echo "${time} 增量备份失败???" >> /home/backup/config/results.log
fi #更新配置文件
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文件夹中然后进行下一个周期

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

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

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

    粗略介绍冷备,热备,温暖,及Mysqldump,mysqlpump,xtrabackup,innobackupex 全量,增量备份 --备份的目的 灾难恢复:意外情况下(如服务器宕机.磁盘损坏等)对损 ...

  2. MySQL集群-PXC搭建以及使用innobackupex工具进行全局备份和增量备份

    环境:centos7 vm1:10.154.47.236 vm2:10.154.52.189 vm3:10.105.12.50 目的:pxc使用三个节点构建mysql集群,使用innobackupex ...

  3. 企业级mysql数据库完全备份、增量备份脚本

    企业完全备份脚本 [root@client ~]# vim /opt/mysql_bak_wanbei.sh #!/bin/bash #MySQL数据库完全备份脚本 #设置登录变量 MY_USER=& ...

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

    原文地址:http://www.tuicool.com/articles/RZRnq2 Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对In ...

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

    xtrabackup-2.4.8的安装及使用 Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备 ...

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

    Percona Xtrabackup备份mysql全库及指定数据库(完整备份与增量备份) Xtrabackup简介 Percona XtraBackup是开源免费的MySQL数据库热备份软件,它能对I ...

  7. MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken

    xtrabackup简介 xtrabackup是一个用来对mysql做备份的工具,它可以对innodb引擎的数据库做热备.xtrabackup备份和还原速度快,备份操作不会中断正在执行的事务,备份完成 ...

  8. 阿里云 如何减少备份使用量? mysql数据库的完整备份、差异备份、增量备份

    RDS for MySQL备份.SQL审计容量相关问题_MYSQL使用_技术运维问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/4 ...

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

    mysql增量和完全备份innobackupex2.1.9版本1 yum安装: 官网地址:https://www.percona.com/doc/percona-xtrabackup/LATEST/i ...

  10. MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]

    MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份] 1.Xtrabackup的安装 percona-xtrabackup-2.2.3-4982.el6.x86_ ...

随机推荐

  1. ECSHOP安装或使用中提示Strict Standards: Non-static method cls_image:

    随着ECSHOP的不断发展,越来越多的人成为了ECSHOP的忠实粉丝.由于每个人的服务器环境和配置都不完全相同,所以ECSHOP也接二连三的爆出了各种各样的错误信息.相信不少新手朋友在ECSHOP安装 ...

  2. BZOJ 1682: [Usaco2005 Mar]Out of Hay 干草危机

    Description 牛们干草要用完了!贝茜打算去勘查灾情. 有N(2≤N≤2000)个农场,M(≤M≤10000)条双向道路连接着它们,长度不超过10^9.每一个农场均与农场1连通.贝茜要走遍每一 ...

  3. 关于hibernate的实体类中有集合类型转化成JSON的工具类 - 怀念今天的专栏 - 博客频道

    Json 来源:http://blog.csdn.net/zczzsq/article/details/18697045#1536434-hi-1-4387-42d97150898b1af15ddaa ...

  4. 第九章 Mass Storage设备

    9.1 Mass Storage设备介绍 USB的Mass Storage类是USB大容量储存设备类(Mass Storage Device Class).专门用于大容量存储设备,比如U盘.移动硬盘. ...

  5. 气死人不偿命,Q_OBJECT导致的C++报错,而且还看不明白(#ifdef没控制好,导致什么都不认识了)

    为了代码可以同时适应VC++和MingW编译器,我改动了我的代码,变成: #ifdef _MSC_VER #pragma comment(lib, "crypt32.lib") / ...

  6. 雷军的B面:那些赔到血本无归的失败投资案例

    文/李红双 雷军投资方向偏多元化布局,从电商到房地产,从互联网社区到移动互联网,多方跨界的结果必然是有失有得.本文扒一扒“雷军系”中最惨烈的电商投资,凡客诚品融资5.3亿美元目前处于垮台边缘,乐淘融资 ...

  7. Python和C|C++的混编(一):Python调用C、C++---Boost库

    不使用boost.python库来直接构建dll的话比较繁琐,下面实例是借助boost库实现python对C.C++的调用 1 首先确定已经安装python和boost库,本例测试环境是python2 ...

  8. java web路径的问题

    对于<form action="/xx"> 和 <a href='/xx'> 其中,xx相应的为网站根目录 一般网站为虚拟目录,所以要 写成   /web应 ...

  9. PSTN

    PSTN ( Public Switched Telephone Network )定义:公共交换电话网络,一种常用旧式电话系统.即我们日常生活中常用的电话网.工作原理 公共交换电话网络是一种全球语音 ...

  10. MapReduce 模式、算法和用例(MapReduce Patterns, Algorithms, and Use Cases)

    在新文章“MapReduce模式.算法和用例”中,Ilya Katsov提供了一个系统化的综述,阐述了能够应用MapReduce框架解决的问题. 文章开始描述了一个非常简单的.作为通用的并行计算框架的 ...