第87讲:XtraBackup备份工具的核心技术要点及全库备份、恢复案例

文章目录

    • 1.XtraBackup备份工具的简介
    • 2.XBK备份工具的安装
    • 3.XBK备份工具的使用语法
    • 4.XBK备份前的准备
    • 5.使用XBK对全库进行备份
      • 5.1.XBK备份全库数据的语法格式
      • 5.2.使用XBK进行全库备份
      • 5.3.查看XBK备份的数据文件
      • 5.4.备份过程中生产的XBK文件
    • 6.模拟故障案例并使用XBK恢复备份的数据
      • 6.1.模拟故障导致数据库损坏
      • 6.2.从XBK备份中恢复数据
    • 7.自主定义XBK备份文件的名称

1.XtraBackup备份工具的简介

XtraBackup是Percona公司开源的一款MySQL InnoDB(包括XtraDB,MyISAM)数据库备份工具,基于InnoDB的崩溃恢复功能,由于支持不锁表的在线物理热备而被广泛应用于生产环境。

XBK备份恢复原理:

XtraBackup备份执行的瞬间,会立即触发checkpoint机制,将已提交事务的脏页数据从内存刷新到磁盘中,并记录此时日志序列号(LSN号),此时触发备份,然后复制磁盘中的数据页以及数据文件到备份路径,在备份过程中可能会有新的数据变化、新的事物提交,XBK还会将备份过程中产生的Redo log和Undo log一并备份,并且提取Redo Log中最后的LSN号,也就是checkpoint机制刷新到磁盘时记录的LSN之后,产生的Redo log和Undo log。

XtraBackup备份时会对非InnoDB引擎的表进行锁表,实现温备,对InnoDB引擎的表不进行锁表,直接复制InnoDB数据页及数据文件到备份路径中。

XBK的恢复过程就是模拟InnoDB的自动故障恢复(CSR)的过程,将Redo Log与Undo log进行应用,对比Redo log中最后的LSN号和备份前记录时的LSN号,既要保证备份数据的恢复,又要保证备份时产生的新数据的恢复,备份时产生的新数据就是从备份时的LSN号到Redo中的LSN之间的数据,这些数据如果是提交的那么就用备份的Redo文件恢复,如果是未提交的数据则使用备份的Undo文件进行恢复,恢复就是将备份的数据文件cp还原到原数据目录下。

XBK热备理念就是将备份触发之前的数据都备份,对于备份过程中的新数据也会备份下来,备份过程中的新数据就是Redo Log和Undo Log了,XBK在备份触发的时候会通过CKPT机制刷新脏页数据到磁盘,此时会记录LSN号,而Redo Log中也有对应的LSN号,当我们要恢复数据时,假如说备份时的LSN号是101,备份完后Redo Log中的LSN号是110,那么102-110之间的LSN号对应的事务就是备份过程中产生的新数据,对于新数据已经提交的数据用备份的Redo文件恢复,未提交的数据用Undo文件进行回滚恢复,保证数据的一致性。

XBK备份需要依赖MySQL的主配置文件/etc/my.cnf,如果配置文件不在这个路径需要单独指定。

2.XBK备份工具的安装

1.安装依赖的软件
[root@mysql ~]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL

2.安装xbk
[root@mysql ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
[root@mysql ~]# yum -y install percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm	

3.XBK备份工具的使用语法

XBK备份语法格式:innobackupex [--defaults-file=#] [OPTIONS] 备份路径

参数:

  • --defaults-file:指定MySQL配置文件的路径。
  • --apply-log:整理备份,将redo log进行重做,将已提交的事务写到备份的数据文件,对未提交的事务使用undo回滚掉,模拟了CSR的过程,这个参数就是将备份过程中产生的新数据一并写入到备份文件中,保证数据的一致性。
  • --redo-only:这个参数需要配合--apply-log这个参数一起使用,表示在整理备份数据时只执行redo前滚操作,不执行undo回滚操作。
  • --copy-back:恢复数据。
  • -S:指定MySQL socket文件。
  • --stream=tar:开启流备份,备份成tar包。
  • --user-memory=256M:为xbk分配256M的内存进行备份。
  • --parallel=8:并发处理数,一般都是CPU核数的一半。

4.XBK备份前的准备

XBK备份前我们需要进行一些配置,否则备份会失败。

首先要确保MySQL主配置文件在/etc/my.cnf里,如果不在这个路径,备份时需要指定配置文件的路径,如以下所示:通过--defaults-file参数指定配置文件的路径。

[root@mysql ~]# innobackupex --defaults-file=/etc/my.cnf --user=root --password=123456  /data/dbbackup/

另外还需要在MySQL的主配置文件中指定客户端使用的MySQL socket文件,否则XBK备份时会报错,提示找不到socket文件。

[root@mysql ~]# vim /etc/my.cnf
[client]
socket=/tmp/mysql.sock

如果不想在主配置文件中指定client的socket文件,那么可以在备份命令中通过-S参数指定socket文件的路径。

[root@mysql ~]# innobackupex --user=root --password=123456 -S /tmp/mysql.sock /data/dbbackup/

5.使用XBK对全库进行备份

5.1.XBK备份全库数据的语法格式

innobackupex --user=数据库账号 --password=数据库密码 --defaults-file=配置文件路径 -S socket文件路径 备份路径

5.2.使用XBK进行全库备份

[root@mysql ~]# innobackupex --user=root --password=123456 /data/dbbackup/

当看到 completed OK! 一行就表示备份成功了。

image-20220703105846689

5.3.查看XBK备份的数据文件

XBK备份结束后,会在指定的备份路径生成一个当前时间命名的目录,在这个目录中存放了备份数据库的数据文件。

image-20220703110021558

XBK备份出来的就是数据库的数据文件,可以和数据库数据路径的文件进行对比,几乎就是完完全全的cp过来的,除了数据库的备份外,还产生了四个XBK生成的文件。

image-20220703110221097

5.4.备份过程中生产的XBK文件

使用XBK备份完成后,会生产四个关于XBK的文件,用于记录一些配置信息。

-rw-r----- 1 root root       63 73 10:58 xtrabackup_binlog_info
-rw-r----- 1 root root      113 73 10:58 xtrabackup_checkpoints
-rw-r----- 1 root root      542 73 10:58 xtrabackup_info
-rw-r----- 1 root root     2560 73 10:58 xtrabackup_logfile
	

1)xtrabackup_binlog_info

该文件会记录备份时刻Binlog的状态信息,包括备份时最近的GTID号以及事件的Position标识位号,可以用来截取Binlog日志。

[root@mysql 2022-07-03_10-58-17]# cat xtrabackup_binlog_info 
mysql-bin.000013	344	e0a2c0cc-f835-11ec-8a3c-005056b791aa:1-79

334就是事件的Position号。

2)xtrabackup_checkpoints

记录XBK备份触发时的checkpoints机制信息。

[root@mysql 2022-07-03_10-58-17]# cat xtrabackup_checkpoints 
backup_type = full-backuped
from_lsn = 0					#上次所到达的LSN号(对于全备就是从0开始,对于增量有别的显示方法)
to_lsn = 6136767				#备份开始时间(ckpt)点数据页的LSN号
last_lsn = 6136776				#备份结束后,redo日志最终的LSN
compact = 0
recover_binlog_info = 0

这个文件非常重要。
(1)备份时刻,立即将已经commit过的,内存中的数据页刷新到磁盘(CKPT).开始备份数据,数据文件的LSN会停留在to_lsn位置。
(2)备份时刻有可能会有其他的数据写入,已备走的数据文件就不会再发生变化了。
(3)在备份过程中,备份软件会一直监控着redo的undo,如果一旦有变化会将日志也一并备走,并记录LSN到last_lsn。
从to_lsn ----> last_lsn 就是备份过程中产生的数据变化.

3)xtrabackup_info

XBK备份时的一些参数信息。

image-20220703111144658

4)xtrabackup_logfile

日志文件。

6.模拟故障案例并使用XBK恢复备份的数据

6.1.模拟故障导致数据库损坏

将db_1、db_2、db_3的数据文件删除,然后从XBK备份中恢复数据。

[root@mysql ~]# rm -rf /data/mysql/db_1/
[root@mysql ~]# rm -rf /data/mysql/db_2/
[root@mysql ~]# rm -rf /data/mysql/db_3/

6.2.从XBK备份中恢复数据

1)对redo log进行重做

将redo log进行重做,将已提交的事务写到备份的数据文件,对未提交的事务使用undo回滚掉,模拟了CSR的过程,这一步就是将备份过程中产生的新数据一并写入到备份文件中,保证数据的一致性。

[root@mysql ~]# innobackupex --apply-log /data/dbbackup/2022-07-03_10-58-17/

2)恢复数据

恢复数据非常简单,只需要通过cp命令将数据文件拷贝到数据库目录即可。

[root@mysql ~]# \cp -ra /data/dbbackup/2022-07-03_10-58-17/* /data/mysql/
[root@mysql ~]# chown -R mysql. /data/mysql/
[root@mysql ~]# systemctl restart mysqld

7.自主定义XBK备份文件的名称

在前面看到XBK备份出来的目录是以时间戳定义的,精确到了时分秒,其实也不太友好。

我们可以通过--no-timestamp参数跳过XBK默认的备份文件名,我们自定义XBK的备份文件名称。

[root@mysql ~]# innobackupex --user=root --password=123456  --no-timestamp /data/dbbackup/all_bak_`date +%F`

image-20220703112713170

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307662.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从传统部署到无服务器计算:AI应用在AWS平台上的革新与飞跃

文章目录 《快速构建AI应用–AWS无服务器AI应用实战》内容简介作者简介目录 随着人工智能技术的不断发展,越来越多的企业开始将人工智能应用于各个业务场景,以提高效率、降低成本并创造新的商业模式。然而,传统的人工智能解决方案往往需要大量…

数字化工厂产品推荐 带OPC UA的分布式IO模块

背景 近年来,为了提升在全球范围内的竞争力,制造企业希望自己工厂的机器之间协同性更强,自动化设备采集到的数据能够发挥更大的价值,越来越多的传统型工业制造企业开始加入数字化工厂建设的行列,实现智能制造。 数字化…

Linux系统操作——tcping安装与使用

目录 .一、安装 1、安装依赖 tcptraceroute和bc 2、安装tcping 3、赋予tcping执行权限 4、测试 5、tcping返回结果说明 二、使用说明(参数) 一、安装 1、安装依赖 tcptraceroute和bc 【 CentOS 或 RHEL】 sudo yum install -y tcptraceroute bc…

快递批量查询神器,一键自动识别快递公司并实时追踪

想象一下,你有一堆快递单号需要查询,一个个复制粘贴简直让人崩溃!现在,有了我们的快递批量查询神器,这些烦恼全部消失! 首先第一步,进入快递批量查询高手主页面之后,点击“高级设置…

kafka: 基础概念回顾(生产者客户端和机架感知相关内容)

一、kafka生产者客户端 在kafka体系结构中有如下几个重要的概念: Producer:生产者,负责生产消息并投递到kafka broker的某个的分区中Consumer:消费者,负责消费kafka若干个分区中的消息Broker:kafka服务节…

20240110-你是成年人了,你的精力要用来赚钱

丘吉尔曾经说过:从让一个人生气事情的大小,就能看出一个人的价值。我觉得这句话很有道理。为什么有的人动不动就生气?而有的人却对一些冒犯做到丝毫不在乎? 我们经常就一些鸡毛蒜皮的事情去计较,其实很多事情不值得我…

格雷希尔G65系列快速接头满足汽车减震器的气压、油压测试要求

当汽车经过不平路面时,汽车减震器可以抑制弹簧吸震后因反弹带来的震荡和来自路面的冲击,为乘客带来平稳舒适的行车体验。减震器在出厂之前,需要模拟汽车的真实行驶环境,在模拟当中需要对它们进行气压和油压的轮番测试。 客户的测试…

LLaMA-VID:突破视觉语言模型界限,精准捕捉图像精髓

模型概述 LLaMA-VID模型的主要目标是解决现有视觉语言模型在处理长时视频时遇到的挑战。这些挑战主要包括处理大量视觉特征所需的高计算资源以及信息的复杂性和冗余性。为了克服这些难题,LLaMA-VID采用了创新的方法,有效地减少了长时视频中无关紧要信息…

vue echarts折线图加背景颜色 值区域对应的右侧加上文本

mounted() {this.lineEcharts();},lineEcharts() {const option { tooltip: {trigger: axis,transitionDuration: 0 // 让toolltip紧跟鼠标,防止抖动},title: {text: 得分,left: 25,textStyle:{color: #333,fontSize: 12,fontWeight: 400}, },legend:…

Alphalens因子分析(2) - 低换手率因子秒杀98%的基金经理?

上一篇笔记,我们已经为因子分析准备好了数据。这一篇笔记,我们就进行因子分析。分析过程在 Alphalens 中非常简单,核心是读懂它的报告。 Alphalens 框架 Alphalens 的主要模块是 utils, tears, performance 和 plotting。 utils 主要功能是…

elementui dialog 回车时却刷新整个页面

到处都是坑,这个坑填完另一个坑还在等你。。。坑坑相连,坑坑不同。。。 使用el-dialog弹出一个表单,当我无意间敲到回车键时,整个页面被刷新了,又是一脸的懵逼。。。 经过查找文档发现解决方案为上述截图标记。。。 e…

SaaS先驱Salesforce发展史

Salesforce是云计算和SaaS领域的先驱,大致经过5个不同发展阶段 第一个阶段:SaaS CRM发展初期 Salesforce成立时间是1999年,其SaaS业务的Idea的灵感起源于IaaS巨头亚马逊。初期标榜的竞品Siebel早期投入高、很难上手、功能过于复杂、实用性不强…

C语言之详解数组【附三子棋和扫雷游戏实战】

文章目录 一、一维数组的创建和初始化1、数组的创建2、数组的初始化3、一维数组的使用4、 一维数组在内存中的存储 二、二维数组的创建和初始化1、二维数组的创建2、二维数组的初始化3、二维数组的使用4、二维数组在内存中的存储 三、数组越界边界值考虑不当导致越界访问数组大…

龍运当头--html做一个中国火龙祝大家龙年大吉

🐉效果展示 🐉HTML展示 <body> <!-- partial:index.partial.html --> <svg><defs><g id=

推荐VSCODE插件:为`package.json`添加注释信息

众所周知&#xff0c;JSON文件是不支持注释的&#xff0c;除了JSON5/JSONC之外&#xff0c;我们在开发项目特别是前端项目时&#xff0c;大量会用到JSON文件&#xff0c;特别是在编写package.json中的scripts时&#xff0c;由于缺少注释,当有大量的命令脚本时&#xff0c;就有了…

【REST2SQL】07 GO 操作 Mysql 数据库

【REST2SQL】01RDB关系型数据库REST初设计 【REST2SQL】02 GO连接Oracle数据库 【REST2SQL】03 GO读取JSON文件 【REST2SQL】04 REST2SQL第一版Oracle版实现 【REST2SQL】06 GO 跨包接口重构代码 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xf…

【Spring Boot】SpringBoot maven 项目创建图文教程

创建一个Spring Boot项目并使用Maven进行构建是一项相对简单的任务。以下是使用IntelliJ IDEA创建Spring Boot Maven项目的详细教程&#xff1a; 步骤 1&#xff1a;安装 IntelliJ IDEA 确保你已经安装了最新版本的 IntelliJ IDEA。你可以从官方网站下载并安装。 步骤 2&am…

构建高效学习平台:企业培训系统源码深度解析

企业培训系统是组织中培养和提升员工技能的核心工具。本文将深入探讨企业培训系统的源码&#xff0c;通过关键技术代码解析&#xff0c;揭示其中的设计原理和功能实现&#xff0c;以构建更高效的学习平台。 1. 环境配置与依赖项安装 首先&#xff0c;让我们关注源码的环境配…

小测一下HCL中VSR的转发性能

正文共&#xff1a;555 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 上次我们在HCL中导入了NFV的自定义镜像&#xff08;如何在最新版的HCL 5.10.0中导入NFV镜像&#xff1f;&#xff09;&#xff0c;但是当时没有测试转发性能&#xff0c;最近HCL又更新了V5.10.1版本…

电脑文件mfc100u.dll丢失的解决方法分析,怎么修复mfc100u.dll靠谱

mfc100u.dll丢失了要怎么办&#xff1f;其实很多人都遇到过这样的电脑故障吧&#xff0c;说这个mfc100u.dll文件已经不见了&#xff0c;然后一些程序打不开了&#xff0c;那么这种情况我们要怎么解决呢&#xff1f;今天我们就来给大家详细的说说mfc100u.dll丢失的解决方法。 一…