mysql二进制增量备份
最近一直在思考如何增量备份二进制日志,这样一来我们就可以用mysqldump +二进制全备或者利用xtrabackup+二进制备份
思想:利用mysql-bin.index,如果是第一次备份,就将mysql-bin.index中的所有文件都复制到备份目录下,然后保存备份后二进制日志的序号到一个文件中backbinlogpostion
增量备份时(非第一备份),就用backbinlogpostion存的序号与当前mysql_bin.index中的比较,如果序号小于mysql-bin.index的序号,则复制该二进制文件到备份目录
#!/bin/bash
#################################################################
#name:incrementalbackdb
#function:incremental-backup for mysql everyday
#finish-time:2015-04-02 by yzx@tianqu.com.cn
#################################################################
BinDir=/usr/local/mysql/data
BackupDir=/usr/backupyzx
BinLogFile=/usr/local/mysql/data/mysql-bin.index
BackLogPostion=0
BackupLog=${BackupDir}/backup.log
printN=
BinLogPostion=$(wc -l $BinLogFile|awk '{print $1}')
#get Binnary log sequ
LastSeqBinLog=$(basename $(tail -n 1 $BinLogFile))
LastBinLogPostion=${LastSeqBinLog##*0}
#before you backup,you should flush logs
/usr/local/mysql/bin/mysqladmin -uroot -p'tianqu' flush-logs
echo "begin increment-backup,time is:" $(date +'%Y-%m-%d %H:%M:%S') >>$BackupLog
if [ -e ${BackupDir}/backbinlogpostion ];then
#取出backbinlogpostion中二进制的序号,例如mysql-bin.000002,保存的序号就是2
BackLogPostion=$(cat ${BackupDir}/backbinlogpostion)
#如果当前二进制的序号与备份的二进制序号相同
if [ ${LastBinLogPostion} -eq $BackLogPostion ];then
echo "backup skiped,backup success!" >>${BackupLog}
else
#取出序号的之间的差值
printN=$((${LastBinLogPostion}-${BackLogPostion}))
echo $printN
q=$((${BackLogPostion}+1))
for file in $(tail -n ${printN} ${BinLogFile});do
basefile=$(basename ${file})
if [ $q -ge ${LastBinLogPostion} ];then
break;
fi
cp -pd ${BinDir}/${basefile} ${BackupDir}
echo ${basefile}" is copying...">>${BackupLog}
((q++))
done
echo ${LastBinLogPostion} >${BackupDir}/backbinlogpostion
fi
else
#如果是第一次备份,则创建backbinlogpostion,记录当前已经复制二进制的日志,方便第二次备份时,只备份新增的部分
touch ${BackupDir}/backbinlogpostion
i=1
for file in $(cat ${BinLogFile});do
basefile=$(basename ${file})
if [ $i -eq ${BinLogPostion} ];then
echo ${basefile##0} >${BackupDir}/backbinlogpostion
fi
if [ $i -eq $((${BinLogPostion}+1)) ];then
break;
fi
cp -pd ${BinDir}/${basefile} ${BackupDir}
echo ${basefile}" is copying...">>${BackupLog}
((i++))
done
fi
echo "increment-backup finished,time is :" $(date +'%Y-%m-%d %H:%M:%S')>>$BackupLog
#Delete old file
#将当前备份的文件转移到远程机器,然后删除本地的存档
#find ${BackupDir} -type f -mtime +15 -exec rm -rf {} \;
#/usr/bin/rsync -vzrtopg --progress ${BackupDir} rsyncusr@192.168.1.201::backup/backdb/ --password-file=/usr/local/etc/rsyncd.sec
转载于:https://blog.51cto.com/linuxybird/1638035
mysql二进制增量备份相关推荐
- mysql数据库二进制备份_MySQL数据库如何创建全库及二进制增量备份脚本
MySQL数据库如何创建全库及二进制增量备份脚本 发布时间:2020-05-25 11:52:55 来源:51CTO 阅读:206 作者:三月 下面讲讲关于MySQL数据库如何创建全库及二进制增量备份 ...
- 实验——MySQL数据库增量备份恢复
目录 一.MySQL数据库增量备份恢复 1.1 物理冷备份,开启服务 1.2 开启二进制日志文件 1.3 创建库和表,进行完全备份和增量备份 1.4 进行正常操作和误操作,进行增量备份 1.5 查看增 ...
- mysql完全备份 二进制日志,MySQL二进制日志备份和恢复详解
原文链接:http://www.showerlee.com/archives/681 ****经实践,该教程ok,特在此分享**** 基本概念 定义: 二进制日志包含了所有更新了数据或者已经潜在更新了 ...
- MySQL 数据增量备份
目录 MySQL 数据增量备份 binlog日志 日志概述 启用日志 自定义日志存储目录和日志文件名 手动生成新的日志文件 清理日志(删除已有的日志文件) 查看日志文件内容 使用binlog日志恢复数 ...
- linux mysql定时增量备份_Mysql 日常备份和增量备份脚本(Linux)
适合对象 本文是在linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本. 本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采 ...
- mysql定时增量备份_Mysql日常自动备份和增量备份脚本
序 你是否在寻找一个MySQL备份脚本? 适合对象 本文是在Linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本. 本文适合于没有启动复制功能 ...
- kafka对接mysql_【Canal】利用canal实现mysql实时增量备份并对接kafka
简介 canal 1.1.1版本之后, 默认支持将canal server接收到的binlog数据直接投递到MQ, 目前默认支持的MQ系统有: kafka: https://github.com/ap ...
- 实战-MySQL定时增量备份(2)
阅读本文大约需要 9 分钟 实战-MySQL定时全量备份(1) 实战-MySQL定时增量备份(2) 实战-将MySQL备份上传到私有云(3) 概要 引言 增量备份 恢复增量备份 定时备份 引言 在产品 ...
- C 实现Mysql增量备份_window下mysql数据库增量备份实现教程
mysql增量备份(mysql5.1 之后),linux下mysql增量备份 网上资料很多.这里只说明window下mysql增量备份. 定义: mysql数据库会以二进制的形式,自动把用户对mysq ...
- mysql实时增量备份
启用binlog日志实现对数据的增量备份: 日志存储位置: /var/lib/mysql/ 日志名称:主机名-bin.000001 或mysqld-bin.000001 binlog日志概述:二进制日 ...
最新文章
- 洛谷P1450:硬币购物(背包、容斥)
- 作者:洪学海(1967-),男,博士,中国科学院计算技术研究所研究员,信息技术战略研究中心常务副主任。...
- C#自定义控件:WinForm将其它应用程序窗体嵌入自己内部
- 如何保护 .NET 应用的安全?
- Mac 下配置XAMPP
- Cognos 11.0快速开发指南 Ⅱ
- Axure8与Axure9交互差异总结-1 移动元件交互事件的差异
- 什么是系统时钟?什么是时钟系统?时钟系统有什么作用?
- 思考深度学习的泛化能力
- 远程视频监控必备专业知识
- centos7.5换源
- 北京科技大学本科毕业论文答辩PPT模板
- sqlserver 之STUFF的运用
- 感动中国感动谁(转)
- 产品需求模型之贪嗔痴
- 上传失败 已保存至草稿_抖音上传失败保存草稿箱怎么回事,抖音上传失败已保存至草稿箱...
- iPhone屏蔽APP广告的方法
- 网红程序员,粉丝打赏年入 10 万美元!
- 群辉 虚拟linux,黑群晖DSM6.2.1在centos7的KVM里面总是crash
- python人脸特征提取_实现人脸识别、人脸68个特征点提取,或许这个 Python 库能帮到你!...
热门文章
- Python单下划线与双下划线
- 基于深度极限学习机DELM的分类
- Python图像的基本操作
- python 删除满足条件的行
- 爬虫实战(一)之爬取房天下新房数据
- 老板下死命令:必须将20M文件从30秒压缩到1秒,我是如何做到的?
- Android studio中的一次编译报错’Error:Execution failed for task ':app:transformClassesWithDexForDebug‘,困扰了两天
- SurfaceView浅析
- 关于Python脚本的前两行
- 会java需要多久能学会python_学好Python,c++ 和Java要多久?