增量备份之所以能工作是因为每个innodb的page都包含日志序列号(LSN)。LSN是整个数据库的版本号。

增量备份会拷贝那些LSN比备份开始时新的页。有两种算法用来计算查找这些页:第一种,支持所有版本类型,从数据页中直接读取页的LSN号;第二种,只是支持percona server,可以跟踪所有改变的页,也改变跟踪信息会写入一个单独的、压缩的bitmap文件。xtrabackup使用这个文件去读取需要备份的页,从而降低了读请求。也可以使用--incremental-force-scan来强制读取所有的页,即使有bitmap文件存在。

增量备份并不需要将数据文件与之前的备份文件相比较。事实上,即使没有之前的备份,也可以使用--incremental-lsn直接进行增量备份。增量备份只是比较lsn。

备份的时候,xtrabackup会向--target_dir目录写入一个文件:xtrabackup_checkpoints。这个文件包含一行带有to_lsn的内容,即数据库备份后的lsn。
比如:

$ more xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 1626007
last_lsn = 1626007
compact = 0
recover_binlog_info = 1

  

执行增量备份的过程:

1.创建全备
$ xtrabackup --backup --target-dir=/data/backups/base 2.执行增量备份
$ xtrabackup --backup --target-dir=/data/backups/inc1 --incremental-basedir=/data/backups/base
在/data/backups/inc1下包含delta文件 3.再次增量备份
$ xtrabackup --backup --target-dir=/data/backups/inc2 --incremental-basedir=/data/backups/inc1

 

如何对增量备份做prepare

对增量备份做prepare步骤,和全备不同。
对全被做prepare,为了确保数据一致性,要完成两种操作:事务前滚、事务回滚。
对增量备份做prepare,必须略过对未提交的事务的回滚,因为未提交的事务在备份的时候可能还在处理过程中,可能会在下一次增量备份时提交。所以需要使用xtrabackup --apply-log-only来阻止对事务回滚,否则增量备份是无效的。

假设有一个全备、两份增量备份:

/data/backups/base
/data/backups/inc1
/data/backups/inc2

  

要先对全备做prepare,再依次对增量备份做prepare:

$ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base
$ xtrabackup --prepare --apply-log-only --target-dir=/data/backups/base --incremental-dir=/data/backups/inc1
$ xtrabackup --prepare --target-dir=/data/backups/base --incremental-dir=/data/backups/inc2

  

xtrabackup-增量备份的更多相关文章

  1. xtrabackup增量备份mysql +MHA

    http://blog.csdn.net/yanggd1987/article/category/2214421 https://www.centos.bz/2013/09/innobackupex- ...

  2. XtraBackup增量备份

    mysql:5.6.29xtrabackup:2.2.10mysql数据目录:/data/mysqlmysql备份目录:/data/dbbak/ #确保有足够的磁盘空间 官方文档:https://ww ...

  3. innobackupex 备份 Xtrabackup 增量备份

    Mysql增量备份Xtrabackup中包含两个工具:•        xtrabackup - 用于热备份innodb, xtradb表的工具,不能备份其他表(MYISAM表).•        i ...

  4. Xtrabackup 增量备份 和 增量还原

    目录 测试数据准备 进行全量备份 第一次增量插入一条数据 进行第一次增量备份 注意 第二次增量插入一条数据 进行第二次增量备份 注意 查看xtrabackup_binlog_info中的binlog位 ...

  5. xtrabackup增量备份MySQL-5.7操作说明

    下载工具 本方法利用xtrabackup二进制包,版本是2.4.26 # 从官网下载二进制包:wget https://downloads.percona.com/downloads/Percona- ...

  6. xtrabackup 增量备份(InnoDB)

    mysql> select * from users; +----+-----------+----------+--------------+ | id | name | password | ...

  7. mysql xtrabackup增量备份

    mysql 增量备份策略 周一全备,其他增量备份,根据业务需要,设定保留日期,如保留一月. 增量备份步骤; 1 创建全备 2 根据全备目录,创建增量备份 3 第二次增量备份根据第一次增量备份目录,依次 ...

  8. 16、xtrabackup 增量备份及恢复

    备份命令如下 备份命令如下 全量备份 #  innobackupex -p123123 /backup # ls /backup 2017-04-08_13-36-11 增量备份或差量备份 # inn ...

  9. XtraBackup全备与增量备份

    一.XtraBackup安装 下载地址:http://www.percona.com/downloads/XtraBackup/XtraBackup-2.2.8/source/ 安装步骤: ===== ...

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

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

随机推荐

  1. Office 如何添加Adobe Acrobat虚拟PDF打印机

    在服务中找到Print Spooler服务,如果是停止的点击启动,如果已经启动点击重新启动   在打印机中添加本地打印机   使用现有端口,然后选择Adobe PDF选项,下一步,然后在厂商中选择Ad ...

  2. python网络爬虫 - 设定重试次数内反复抓取

    import urllib.request def download(url, num_retries=2): print('Downloading:', url) try: html = urlli ...

  3. 解决IE6兼容性问题的十一大技巧

    10要点解决IE6兼容性问题 1.使用声明 你必须经常在html网页头部放置一个声明,推荐使用严格的标准.例如 <!DOCTYPEHTMLPUBLIC“-//W3C//DTDHTML4.01// ...

  4. reStructuredText - 一个比MarkDown更好用的标记语言

    文档和教程 http://docutils.sourceforge.net/rst.html http://zh-sphinx-doc.readthedocs.io/en/latest/rest.ht ...

  5. Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作

    前言:本文代码参考自两篇英文博客,具体来源点击文末代码链接中文档说明. (PS:代码运行Python版本为2.7.14) 运行效果: 首页: 注册页面: 登陆界面: 管理员登陆后界面: 添加.删除.修 ...

  6. Data De-duplication

    偶尔看到data deduplication的博客,还挺有意思,记录之 http://blog.csdn.net/liuben/article/details/5829083?reload http: ...

  7. Vue项目的npm环境搭建

    Vue项目的环境搭建主要步骤如下: vue项目创建 安装NodeJS +到官网下载自己系统对应的版本,这里我们下载Windows系统的64位zip文件,下载完成后解压,可以看到里面有一个node.ex ...

  8. JSFL 获取当前脚本路径,执行其他脚本

    Application.jsfl为程序入口,导入其他jsfl [Common.jsfl] function trace() { fl.trace(Array.prototype.join.call(a ...

  9. UI Automation的两个成熟的框架(QTP 和Selenium)

    自己在google code中开源了自己一直以来做的两个自动化的框架,一个是针对QTP的一个是针对Selenium的,显而易见,一个是商业的UI automation工具,一个是开源的自动化工具. 只 ...

  10. [解决]java.lang.IllegalArgumentException: Bad level "DEBUG"

    Tomcat启动报错,搞得烦的一比.常规思维就会迷瞪,谁让tomcat的日志级别特殊ne.... http://tomcat.apache.org/tomcat-7.0-doc/ 错误现象: Hand ...