前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份

XtraBackup工具详解 Part 7 使用innobackupex对数据库进行增量备份

作者头像
bsbforever
发布2020-08-18 15:37:36
4380
发布2020-08-18 15:37:36
举报

前情提要

XtraBackup工具详解 Part 1 xtrabackup介绍

XtraBackup工具详解 Part 2 xtrabackup安装

XtraBackup工具详解 Part 3 XtraBackup工作原理

XtraBackup工具详解 Part 4 XtraBackup权限及配置

XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备

XtraBackup工具详解 Part 6 使用innobackupex对全备进行恢复

实验环境

此次实验的环境如下

  • MySQL 5.7.25
  • Redhat 6.10
  • 操作系统账号:mysql
  • 数据库备份账号:backup

1. 备份命令

1.1 首先新建备份账号

mysql> CREATE USER 'backup'@'localhost' IDENTIFIED BY '123456'; 

mysql> GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'backup'@'localhost'; 

mysql> FLUSH PRIVILEGES;

1.2 建立备份目录

shell>mkdir -p /oradata/data/mysql/xtra/full
shell>mkdir -p /oradata/data/mysql/xtra/incr

这里新建2个目录,分别放全备和增量的备份

注意 mysql用户需要有读写权限,并且该目录需要为空,否则备份失败

1.3 完全备份

首先我们需要对数据进行一次全备

shell> innobackupex  -S /oradata/data/mysql/data/mysql.sock --user=backup --password=123456   /oradata/data/mysql/xtra/full

备份完成后可以看到在/oradata/data/mysql/xtra/full 目录下新建了以日期命名的目录

1.4 第一次增量备份

接下来我们进行第一次的增量备份,备份前我们可以首先更新一些数据库数据方便讲解

注意:对于非innodb的数据库表还是完整拷贝,并没有增量的概念

innobackupex  -S /oradata/data/mysql/data/mysql.sock --user=backup --password=123456 --incremental  /oradata/data/mysql/xtra/incr --incremental-basedir=/oradata/data/mysql/xtra/full/2019-05-30_15-22-32

1.5 第二次增量备份

如果需要继续做增量备份,我们可以选择在全备的基础上做增量,也可以选择在第一次增量备份的基础上做增量备份

innobackupex  -S /oradata/data/mysql/data/mysql.sock --user=backup --password=123456 --incremental  /oradata/data/mysql/xtra/incr --incremental-basedir=/oradata/data/mysql/xtra/incr/2019-05-30_15-23-39

2. 备份过程分析

接下来分析下其备份的过程,从输出的日志上来看

2.1 命令提示部分

上图首先打印出innobackupex可以用的一些参数

并提示说在结束时检查是否备份成功,需要在最后有"completed OK"字样

2.2 连接数据库

然后是连接数据库,进入数据文件目录检查参数,之后开始备份

2.3 备份系统及undo表空间

刚开始说明此次为增量备份

这部分首先列出数据库中有哪些表空间

  • 系统表空间(ibdata)
  • undo表空间(undo)
  • 用户表空间(innodb_file_per_table开启后每张表和表空间一一对应)

首先拷贝系统表空间文件然后是unod表空间文件,最后是innodb表文件

可以看到文件名的后缀为delta,说明这里拷贝的是增量数据

可以看到由于我在备份时手动插入了数据,innobackupex一直在扫描redo 日志文件以反映数据的变化

2.4 备份innodb表数据

可以看到正在拷贝innodb表的文件

可以看到文件名的后缀为delta,说明这里拷贝的是增量数据

由于我在备份时手动插入了数据,可以看到innobackupex一直在扫描redo 日志文件以反映数据的变化

2.5 备份非innodb表数据

可以看到在拷贝数据文件时先执行下面语句进行锁表,不允许用户DML操作

  • FLUSH NO_WRITE_TO_BINLOG TABLES
  • FLUSH TABLES WITH READ LOCK

注意这里并没有delta后缀,说明非innodb的表还是完全备份

之后在非InnoDB表拷贝完之后写信息至xtrabackup_binlog_info文件

该文件后续说明

最后记录最终的LSN号

2.6 完成备份

之后解除锁表,拷贝ib_buffer_pool文件

记录binlog 位置信息

写信息值backup-my.cnf及xtrabackup_info

最后拷贝在备份期间变化的redo日志

3. 生成文件说明

同样我们看到增量备份除了拷贝数据文件外还生成了一些文件

下面我们一一说明

3.1 backup-my.cnf

包含了备份数据库如下信息

  • innodb的一些配置信息
  • 数据库的server ID
  • redo log 的版本
  • 数据库服务器的uuid
  • master key id(安全相关)

这里和完全备份的是一样的

3.2 xtrabackup_binlog_info

其记录了备份完成时binlog的位置及GTID信息

用于复制的搭建

3.3 xtrabackup_checkpoints

该文件对于后续增量备份有用

该文件有如下信息

  • 备份类型:增量备份
  • 开始LSN:9425586
  • 最后检查点LSN:9425625
  • 最后拷贝的LSN:9425634
  • 行COMPACT存储:否

可以看到to_lsn和last_lsn不同 说明在备份过程中有DML操作

to_last 用于增量备份的起点

last_scn 用于最后恢复的位置

其中from_lsn跟全备的to_lsn是一致的

这些后面介绍

3.4 xtrabackup_info

该文件包含一些备份的信息就不一一介绍了

4.无全备情况增量备份

前面说了增量备份只会拷贝大于一个LSN的内容,我们可以直接指定LSN来进行增量备份

当然前提是要知道LSN号

innobackupex  -S /oradata/data/mysql/data/mysql.sock --user=backup --password=123456 --incremental  /oradata/data/mysql/xtra/incr  --incremental-lsn=9425586

5. 参考资料

本专题所有内容翻译子Percona XtraBackup的官方文档

可通过如下链接下载 http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/

觉得文章不错的欢迎转发,收藏~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 宅必备 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情提要
  • 实验环境
  • 1. 备份命令
    • 1.1 首先新建备份账号
      • 1.2 建立备份目录
        • 1.3 完全备份
          • 1.4 第一次增量备份
            • 1.5 第二次增量备份
            • 2. 备份过程分析
              • 2.1 命令提示部分
                • 2.2 连接数据库
                  • 2.3 备份系统及undo表空间
                    • 2.4 备份innodb表数据
                      • 2.5 备份非innodb表数据
                        • 2.6 完成备份
                        • 3. 生成文件说明
                          • 3.1 backup-my.cnf
                            • 3.2 xtrabackup_binlog_info
                              • 3.3 xtrabackup_checkpoints
                                • 3.4 xtrabackup_info
                                • 4.无全备情况增量备份
                                • 5. 参考资料
                                相关产品与服务
                                云数据库 SQL Server
                                腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                                领券
                                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档