mysql 开发进阶篇系列 48 xtrabackup (增量备份与恢复)

 一.增量备份概述

  xtrabackup  和innobackupex  二个工具都支持增量备份,这意味着能复制自上次备份以来更改的数据。可以在每个完整备份之间执行许多增量备份,因此,您可以设置一个备份过程,例如每周一次完整备份和每天一次增量备份,或者每天一次完整备份和每小时一次增量备份。对于定期自动备份可以在备份目录里生成带有时间戳的目录。

  增量备份之所以有效,是因为每个InnoDB页面都包含一个日志序列号(LSN)。每个页面的LSN显示了最近的变化。增量备份复制每个页面,对比增量备份或完整备份的LSN, 查找要复制的页面集。有二个算法来查找LSN。第一个算法是:直接通过读取所有数据页来检查LSN页面。Percona服务器提供的第二个算法是:在服务器上启用已更改的页面跟踪功能,当页面被更改时,该功能会注意到这些页面。

  这些信息将被写入一个紧凑的单独的位图文件。xtrabackup二进制文件将仅使用该文件读取增量备份所需的数据页,从而可能节省许多读取请求。如果xtrabackup二进制文件找到位图文件,则默认启用后一种算法。即使位图数据可用,也可以使用xtrabackup --incremental-force-scan强制扫描来读取所有页面。

  增量备份实际上不会将数据文件与前一个备份的数据文件进行比较。实际上,您可以使用xtrabackup--incremental-lsn来执行增量备份,甚至不需要以前的备份,如果你知道它的LSN。增量备份只需读取页面并将其LSN与上一个备份的LSN进行比较。但是,您仍然需要一个完整的备份来恢复增量更改;如果没有作为基础的完整备份,增量备份是无用的。

 

二. 增量备份案例

  要进行增量备份,请像往常一样从完全备份开始,xtrabackup二进制文件写入一个名为xtrabackup_checkpoints 进入备份的目标目录,这个文件包含一行内容to_lsn,是备份结束时数据库的LSN。

  步骤1: 创建完整数据库备份,这里不在演示(上一篇有讲到)。完全备份结束后,如果您查看xtrabackup_checkpoints文件,会看到LSN  number相关的版本号。以及备份类型为full -backuped。

        
最后我把/data/backups的完整备份目录改成了/data/backups/base。

  步骤2:现在已经有了完整的备份,可以基于它进行增量备份。首先创建/data/backups/inc1 目录。

复制代码
[root@hsr backups]# mkdir inc1 [root@hsr backups]# chmod 777 inc1 [root@hsr backups]# ls base  inc1 -- 下面新增一条数据INSERT INTO test.`testbackup` VALUES(11,'小王')
复制代码

  步骤3:增量备份

复制代码
 [root@hsr backups]# xtrabackup  --host=127.0.0.1 --user bkpuser --password=123456   --backup  --target-dir=/data/backups/inc1 
                           --incremental-basedir=/data/backups/base
复制代码

    增量备份完成后,查看增量备份的xtrabackup_checkpoints文件,这里的from_lsn是备份的起始LSN,对于增量备份,它必须与完整备份或上一次增量备份的to_lsn(如果它是最后一个检查点)相同,这里的完全备份to_lsn与增量备份from_lsn 相同都是125146873序号。这里备份类型为incremental。如下图所示:

  步骤4 : 增量备份(2)
现在可以使用inc1这个目录作为另一个增量备份的基础了,下面先插入一条数据,开始第二次增量备份。首先创建/data/backups/inc2目录

复制代码
[root@hsr backups]# mkdir inc2 [root@hsr backups]# chmod 777 inc2 [root@hsr backups]# ls -l 总用量 0 drwxr-xr-x 6 root root 235 10月 10 12:53 base drwxrwxrwx 6 root root 261 10月 10 13:05 inc1 drwxrwxrwx 2 root root   6 10月 10 13:15 inc2  -- 下面新增一条数据INSERT INTO test.`testbackup` 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信