innobackupex 单脚本循环7天一全备6增备脚本更新
#!/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} --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} --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(文件夹) incremental(文件夹) mysql_back.sh(脚本) tar.gzdb(压缩后的备份)
config文件夹目录下:
3306.cnf(从/etc/my.cnf复制过来的配置文件) config(用于脚本读取判断全备还是增备日期) results.log(结果日志) tar.log(压缩日志)
config文件内容如下:
backup_full=back_24-03-2016
backup_pre_name=incremental/back_27-03-2016
第一次使用配置为
backup_full=
backup_pre_name=
即可
以上目录可以根据自己需要修改,脚本日志没有记录,一般我去/var/spool/mail/root 查看
tar.gz文件夹具体备份截图:
innobackupex 单脚本循环7天一全备6增备脚本更新的更多相关文章
- innobackupex 全备、增备脚本
全备脚本:innobackupex --defaults-file=/etc/my.cnf --user root --password mypasswd /mydata/fullbak/ 增备脚本: ...
- Innobackupex MySQL 全备、增备及恢复
简介: 在这之前都是通过 mysqldump 来备份数据库的,由于是逻辑备份,所以采用这种备份方式数据是很安全的,跨平台.版本都很容易. 凡事有利必有弊,逻辑备份在你数据库比较大时,备份.恢复数据所耗 ...
- shell脚本-循环选择语句
shell脚本-循环选择语句 过程式编程语言: 顺序执行 选择执行 循环执行 注:条件中的变量,可以在执行语句中使用,不用在加上"$". if语句 根据命令的退出状态来执行命令 单 ...
- shell脚本循环和信号
条件判断 if 条件1:then COMMAND elif 条件2:then COMMAND else COMMAND(:) : 表示pass 不执行任何命令 fi 读取用 ...
- 微信小程序自定义音频组件,自定义滚动条,单曲循环,循环播放
小程序自定义音频组件,带滚动条 摘要:首先自定义音频组件,是因为产品有这样的需求,需要如下样式的 而微信小程序API给我们提供的就是这样的 而且产品需要小程序有后台播放功能,所以我们不考虑小程序的 a ...
- centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 第三十六节课
centos shell脚本编程2 if 判断 case判断 shell脚本中的循环 for while shell中的函数 break continue test 命令 ...
- Shell 循环中实现展示进度百分比的脚本方法
Shell 循环中实现展示进度百分比的脚本方法 当我需要处理一个几万行的文件的时候,需要处理的时间是比较长的.我一开始的想法是,没处理一行,就输出一个 # 号.但是这样还是会出现很多很多的 # 号,即 ...
- LinuxShell脚本——循环结构
LinuxShell脚本——循环结构 摘要:本文主要学习了Shell脚本中的循环结构. while循环 基本语法 while循环是最简单的一种循环,如果条件满足则执行循环里的语句,如果条件不满足则退出 ...
- 没事就要多做多练,Shell脚本循环例题做一做
Shell脚本循环例题 一.示例1 二.示例2 三.示例3 四.示例4 ...
随机推荐
- P38、面试题3:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 首先选取数组中右上角的数字 ...
- xml--通过jdom解析及生产XML
JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序.它的设计包含 Java 语言的语法乃至语义. JAXP (用于 XML 语法分析的 Java API)包含了三个软 ...
- Oracle中Blob和Clob类型的区别与操作
Oracle中Blob和Clob类型 1.Oracle中Blob和Clob类型的区别 BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的 ...
- linux根目录下的文件夹
http://wenku.baidu.com/link?url=PDpw0nuLm71kihyYWdGY2niJhQEsJXfu8NVbjy9RxLa-Zur3aoG4NkCFpD-GQKM_sQWN ...
- Spring事务Transaction配置的五种注入方式详解
Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...
- poj1948
很容易想到dp,f[i,j,k]表示到第i根木棒所组成三条边中两条边长为j,k是否存在 之后找所有满足三角形形成条件的三条边,然后找最大: 但: 如果你朴素的写,很有可能超时,事实上,只要加一些常数优 ...
- 【转】angular Ajax请求
1.http请求 基本的操作由 $http 服务提供.它的使用很简单,提供一些描述请求的参数,请求就出去了,然后返回一个扩充了 success 方法和 error 方法的 promise对象(下节介绍 ...
- FirstOrDefault
FirstOrDefault:取序列中满足条件的第一个元素,如果没有元素满足条件,则返回默认值(对于可以为null的对象,默认值为null,对于不能为null的对象,如int,默认值为0)
- C# 网页图片爬虫的几种技术基础
一.文件流方式获取网络图片资源 方法1 , ); System.Net.WebRequest webreq = System.Net.WebRequest.Create(url); System.Ne ...
- Jenkin+TestNG进行自动化测试执行
1.登陆jenkins'后,主页面有一个jenkins管理选项,进入该模块,对插件,系统进行配置.(安装一个extend choice parameter插件) 2.点击new item新建一个项目, ...