mysql 开发进阶篇系列 48 物理备份与恢复(xtrabackup 的增量备份与恢复,以及备份总结)...

news/2024/5/19 5:47:29

一.增量备份概述

  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` VALUES(12,'小李')
[root@hsr backups]# xtrabackup  --host=127.0.0.1 --user bkpuser --password=123456   --backup  --target-dir=/data/backups/inc2 
                           --incremental-basedir=/data/backups/inc1

    第二次增量备份成功后,下面是查看第二次增量备份的xtrabackup_checkpoints文件,起始的LSN 的 from_lsn序号与第一次增量备份的to_lsn 相同。
      

    注意:to_lsn(最后一个检查点LSN)和last_lsn(最后一个复制的LSN)之间存在差异较大时,这意味着在备份过程中服务器上有一些流量。

 

三. prepare增量备份

  prepare参数,一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据 文件仍处于不一致状态。-apply-log-only的作用是通过回滚未提交的事务以及同步已经提交的事务,使数据文件处于一致性状态。
  警告:如果没有使用 xtrabackup --apply-log-only 选项,防止回滚阶段,那么增量备份将是无用的。
  上面创建了完全备份后,可以使用prepare增量备份,然后对完全备份应用增量差异。上面的备份目录如下:
    /data/backups/base

    /data/backups/inc1

    /data/backups/inc2

  步骤1:prepare到完全备份,需要运行xtrabackup --prepare 防止回滚阶段.

[root@hsr backups]# xtrabackup  --host=127.0.0.1 --user bkpuser --password=123456  --prepare --apply-log-only  --target-dir=/data/backups/base

  步骤2:prepare第一个增量备份应用于完整备份

[root@hsr backups]# xtrabackup  --host=127.0.0.1 --user bkpuser --password=123456  --prepare --apply-log-only  --target-dir=/data/backups/base 
                    --incremental-dir=/data/backups/inc1

  步骤3:准备第二个增量备份的过程与上面类似:将增量备份应用于(修改后的)基础备份,然后将其数据及时向前滚动到第二个增量备份点:

[root@hsr backups]# xtrabackup  --host=127.0.0.1 --user bkpuser --password=123456  --prepare  --target-dir=/data/backups/base
                     --incremental-dir=/data/backups/inc2

  注意:xtrabackup  --apply-log-only合并除最后一个以外的所有增量备份,上面的prepare运用并没有使用 --apply-log-only选项。即使在最后一步中使用了--apply-log-only选项。备份仍然是一致的,但在这种情况下,服务器将执行回滚阶段。

  一旦准备好的增量备份与完全备份相同,它们可以以相同的方式恢复。上面将增量备份文件都应用到了/data/backup /base文件中,如下图所示 完全备份的xtrabackup_checkpoints文件此时类型是 log-applied, 它的lsn与第二次增量备份的lsn相同了。
      

四. 恢复还原

-- 先停掉服务
[root@hsr data]# service mysql stop
-- 删除data目录下所有数据文件,安全起见可以先保存原有副本
[root@hsr data]# rm  -rf  /usr/local/mysql/data/*
-- 恢复
[root@hsr backups]# xtrabackup  --defaults-file=/etc/my.cnf  --host=127.0.0.1  --user bkpuser --password=123456 --copy-back --target-dir=/data/backups/base
-- 恢复之后,更改data目录权限为mysql
[root@hsr data]# pwd
/usr/local/mysql/data
[root@hsr data]# chown -R mysql:mysql  ../data
-- 启动服务成功
[root@hsr data]# service mysql start
Starting MySQL.. SUCCESS!

  最后查看test.`testbackup`表,二次增量备份的数据出来了。

 

   总结:学习xtrabackup差不多有5篇了,根据官网的文档来学习还有压缩备份、加密备份、部分备份等,还有一些高级功能:节流备份、无锁二进制日志信息、加密的InnoDB表空间备份。以及不完全恢复,克隆到从库slave。要完全掌握这个备份工具,还有很多知识点。这次学习算入门,以后在慢慢了解,并不断完善整合到文章中。

     从42篇开始 到 48篇里,介绍了逻辑备份和物理备份, 逻辑备份保存是sql文本,可以在各种条件下恢复,但对于大数据量的系统,备份和恢复时间都会比较长。 物理备份则正好相反,由于它是基于文件的cp, 备份和恢复时间比较短,但备份的文件在不同平台上不一定兼容。 

       逻辑备份介绍了mysqldump工具是基于innodb引擎的,对于mysqlhotcopy工具没有介绍,该工具是基于myisam引擎的,最后介绍了物理备份的热备份工具xtrabackup。

      

 

转载于:https://www.cnblogs.com/MrHSR/p/9766964.html


http://www.niftyadmin.cn/n/1978329.html

相关文章

最强安装虚拟机到安装GAMIT/GLOBK教程步骤汇总(建议安装16.04LST)

Gamit/Globk软件是搭载在Linux系统下的,我们熟悉了WIN的界面操作,完全可以借助在WIN下安装虚拟机软件来安装使用Linux系统,目前Linux系统底下的乌班图系统分为16.04和18.04版本,操作差不多,但是新版本也有差异。安装的…

备份和还原Exchange Server 2007邮箱存储组

备份和还原Exchange Server 2007邮箱存储组 出处:Windows中文站 作者:卡西莫多 时间:2007-12-17 0:00:15263企业邮箱,注册即可免费试用邮箱服务器作为Exchange Server 2007中最重要的角色承担着存储用户邮件、文件夹的重任。那么备…

GAMIT/GLOBK解算北斗数据(version:10.71)

解算北斗数据的流程方法和处理GPS 的方法整体上一样,只在一些操作的命令上会有一些差异。由于现在GAMIT还不支持现在三点几的命名方式所以还要把数据文件名转换为二点几的。新建工程文件目录,在里面新建文件夹:brdc、igs、rinex、rinex3四个文…

音视频技术开发周刊 69期

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vn9PLgZvnPs1522s82g/article/details/83027054 『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新…

Treating and the modern mould make high speed 高速加工和现代模具制造

外文翻译 Treating and the modern mould make high speed One, summarizes 1 the present situation that the mould makes at present and trend The mould is important handicraft equipment , occupies decisive position in industrid departments such as consumer good…

布线管理的设计(二)

中国工程建设标准化协会信息通信专业委员会综合布线工作组3 走线管理3.1 管槽的标识管理管槽需要进行管理,标识可以使用粘贴式标签和插入式标签卡。粘贴式标签适合于密闭管槽,插入式标签卡适合于开放式托架。标签卡并可轻松卡接在桥架的侧面和底部以不…

VS下IVF(Fortran)调用MKL函数库的使用配置及计算一般矩阵的特征值与特征向量说明

这篇博文简要记录一下Fortran使用MKL函数库计算一般矩阵的特征值与特征向量: 一、设置vs(我用的是vs2013ivf2013) (1)点击项目>属性 (2)点击Fortran>Libraries>Use Intel Math Kernel…

BGP学习笔记1

BGP学习笔记<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />一、 BGP协议基本概念AS:自治系统AN as is a collection of networks under a single technical administation.一个自治系统通常是一个有着单一管理技术的网络…