专栏首页时悦的学习笔记XtraBackup工具详解 Part 5 使用innobackupex对数据库进行全备

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

前情提要

XtraBackup工具详解 Part 1 xtrabackup介绍

XtraBackup工具详解 Part 2 xtrabackup安装

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

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

实验环境

此次实验的环境如下

  • 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

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

1.3 开始备份

我们有如下方法对MySQL数据库进行全备

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

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

2. 备份过程分析

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

2.1 命令提示部分

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

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

2.2 连接数据库

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

2.3 备份系统及undo表空间

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

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

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

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

2.4 备份innodb表数据

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

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

2.5 备份非innodb表数据

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

  • FLUSH NO_WRITE_TO_BINLOG TABLES
  • FLUSH TABLES WITH READ LOCK

之后在非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:0
  • 最后检查点LSN:9429655438
  • 最后拷贝的LSN:9429655752
  • 行COMPACT存储:否

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

to_last用于增量备份的起点

last_scn用于最后恢复的位置

这些后面介绍

3.4 xtrabackup_info

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

4. 参考资料

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

可通过如下链接下载

http://www.zhaibibei.cn/mysql/xtrabackup/tutorial1/

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

本文分享自微信公众号 - 宅必备(gh_bc574e49c720),作者:宅必备

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • XtraBackup工具详解 Part 10 使用innobackupex对数据库进行部分备份(指定表或数据库)

    单独备份表的话需要表在独立的表空间里面,即配置了innodb_file_per_table参数

    bsbforever
  • 使用innobackupex对数据库进行部分备份(指定表或数据库)

    单独备份表的话需要表在独立的表空间里面,即配置了innodb_file_per_table参数

    bsbforever
  • 使用XtraBackup备份MySQL 8.0 Part 4 对数据库进行全备

    大体上差不多,不过8.0版本移除了innobackupex命令且只能备份8.0版本的MySQL

    bsbforever
  • 我常用的4个备份工具

    不言而喻,备份对我们日常工作是非常重要的,前有GitLab误删300G数据实时恢复数据刺激过程,后有腾讯云故障丢失客户数据,遭千万索赔的尴尬场景。

    数据森麟
  • 虚拟机备份和恢复的六大最佳实践

    虚拟机( virtual machine,简称 VM)的体系结构与传统的本地环境存在较大差异,因此需要不同的数据备份技术。基于此,本文将对虚拟机备份的一些最佳实...

    Techeek
  • 宝塔面板定时备份网站及数据库至FTP存储空间图文教程

    站长平时会用各种方法备份。包括手动备份、自动备份、定时备份等等不同方法。对于运维人员来说不是难事,对于站点较多的新手站长来说是有一点困难的,毕竟新手在技术方便还...

    魏艾斯博客www.vpsss.net
  • Rman备份恢复和管理

    物理备份用于实现数据库的完整恢复,但数据库必须运行在归挡模式下(业务数据库在非归挡模式下运行),且需要极大的外部存储设备,例如磁带库,具体包括冷备份和热备份。冷...

    职场亮哥
  • 腾讯云上数十万实例的备份方法大揭秘。

    腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中,5月23日杨杰的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾。 关注“腾讯云...

    腾讯云数据库 TencentDB
  • MySQL企业版备份工具MEB

    ”工欲善其事,必先利其器“。数据备份是DBA的日常工作,也是保证数据安全的重要工作,要尽善尽美的完成这项工作,必须要使用一款高效可靠的备份工具。MySQL在其企...

    MySQLSE
  • MySQL备份过程的注意事项

    最近疫情比较严重,一直处于远程办公的状态,只有一台笔记本,还是挺不方便的,于是工作效率也比较低,今天看了看数据备份相关的东西,总结了几个MySQL数据备...

    AsiaYe

扫码关注云+社区

领取腾讯云代金券