我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Xtrabackup工作原理

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Xtrabackup工作原理

Xtrabackup工作原理

目录

  • 1.Xtrabackup介绍
  • 2.Xtrabackup备份涉及的数据库名词
    • 2.1.MySQL数据文件扩展名知识说明
    • 2.2.事务型引擎的ACID特性
    • 2.3.InnoDB引擎内部知识概念
    • 2.4.InnoDB引擎内部知识及说明
    • 2.5.InnoDB备份相关名词
  • 3.Xtrabackup备份的工作原理
    • 3.1.Xtrabackup恢复的工作原理
    • 3.2.Xtrabackup执行全备份的原理
    • 3.3.Xtrabackup执行全备份恢复的过程
    • 3.4.Xtrabackup执行增量备份的过程
    • 3.5.Xtrabackup执行增量恢复的过程

Xtrabackup是Percona公司专门针对MySQL数据库开发的一款开源免费的物理备份(热备)工具,可以对InnoDB和XtraDB等事务引擎的数据库实现非阻塞(即不锁表)方式的备份,也可以针对MyISAM等非事务引擎实现锁表方式备份。

Xtrabackup的主要特点:

1、直接复制物理文件,备份和恢复数据的速度非常快,安全可靠。
2、在备份期间执行的事务不会间断,备份InnoDB数据不会影响业务。
3、备份期间不会增加太多数据库的性能压力。
4、支持对备份的数据进行自动校验。
5、支持全量、增量、压缩备份及流备份。
6、支持在线迁移表以及快速创建新的从库。
7、支持几乎所有版本的MySQL和MariaDB。

2.1.MySQL数据文件扩展名知识说明

Xtrabackup备份中涉及的一些数据库专业信息知识:

文件扩展名 文件作用说明
.idb文件 以独立表空间存储的InnoDB引擎类型的数据文件扩展名
.ibdata文件 以共享表空间存储的InnoDB引擎类型的数据文件扩展名
.frm文件 存放与表相关的元数据(meta)信息以及表结构的定义信息
.MYD文件 存放MyISAM引擎表的数据文件扩展名
.MYI文件 存放MyISAM引擎表的索引信息文件扩展名

2.2.事务型引擎的ACID特性

在MySQL中,InnoDB和MariaDB中的XtraDB都是事务型引擎,事务型引擎的共同特征是具备事务的4个特性,这4个特性分别是:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability),又称为ACID特性。

ACID特性说明:

ACID特性 说明
原子性 事务的所有SQL语句操作,要么全部成功,要么全部失败
一致性 事务开始之前和结束之后,数据库应保证数据的完整性不被破坏
隔离性 当多个事务并发访问同一个数据源时,数据库能够保持每个访问的事务之间是隔离的,互不影响的
持久性 事务处理完成之后,事务所做的更改都会是持久化存储,不会丢失数据

2.3.InnoDB引擎内部知识概念

InnoDB基础概念知识:

概念名称 说明
表空间(tablespaces) 表空间是一个逻辑的概念,表空间里存放的是表的数据和索引,这些表的数据和索引又有不同的存储方式,表空间最终体现的是磁盘上数据库的各种物理数据文件
独立表空间(independent tablespaces) 在开启InnoDB的innodb_file_per_table=On这个参数之后,对于每一个新建的InnoDB表,数据库目录下都会多出来一个对应的存放该表数据的.ibd文件
共享表空间(shared tablespaces) 5.6版本以前,MySQL的默认配置就是共享表空间模式,即所有表的数据都会在一个或几个大数据文件中存放
页(page) MySQL的每个表空间都是由若干个页组成的,且每个实例里的每个表空间内都有相同的页大小,默认值是16KB,可以通过innodb_page_size调整页大小,每个页中都包含了表的数据。组成表空间数据的最小单位是页
区段(extent) 在表空间中,系统会把每若干个页进行分组管理,这个组就叫作区段,默认一个区段的大小是64页
段(segments) 段是由多个不同的区段组成的更大的分组。当一个段增加的时候,InnoDB第一次分配32个页给这个段,此后,InnoDB开始分配整个区段给这个段,InnoDB可以一次性添加4个区段给一个大的段,从而确保数据存储时能有一个良好的顺序性

2.4.InnoDB引擎内部知识及说明

InnoDB的表空间分为共享表空间和独立表空间(推荐)两种,表空间里存放数据的最小单位是页,每个页的默认值为16KB;多个连续的页(默认是64个)组成一个区段;而多个区段和页构成一个段。初始时,InnoDB首先会为每个段分配32个页,之后根据实际需要再将区段分配给段,InnoDB可以一次性添加4个区给一个大的段,从而确保数据存储时能有一个良好的顺序性。

2.5.InnoDB备份相关名词

InnoDB日志及Xtrabackup备份原理所涉及的词汇知识:

相关名词 说明
redo日志 redo日志,也称为事务日志,是InnoDB引擎的重要组成部分,作用是记录InnoDB引擎中每一个数据发生的变化信息。主要用于保证InnoDB数据的完整性,以及丢失数据后的恢复,同时还可以有效提升数据库的IO等性能。redo日志对应的配置参数为innodb_log_file_size和innodb_log_files_in_group
undo日志 undo日志是记录事务的逆向逻辑操作或者逆向物理操作对应的数据变化的内容,undo日志默认存放在共享表空间中(ibdata*文件),与redo日志功能不同的是undo日志主要用于回滚数据库崩溃前未完整提交的事务数据,确保数据恢复前后是一致的
LSN LSN(log sequence number)是指日志序列号,是一个64位的整型数字。LSN的作用是记录redo日志时,使用LSN唯一标识一条变化的数据
checkpoint 用来标识数据库崩溃后,应恢复的redo日志的起始点

3.1.Xtrabackup恢复的工作原理

Percona Xtrabackup软件是基于InnoDB等事务引擎自带的redo日志和undo日志功能来保持备份和恢复前后数据一致性的,从而确保数据库的数据安全可靠。在InnoDB引擎中存在一个redo日志(事务日志)功能。redo日志文件会存储每一个InnoDB表中的数据修改记录。当InnoDB数据库启动时,会检查数据文件和redo日志文件,将已经提交到事务日志(redo日志文件)中的信息应用(提交)到数据文件并保存,然后根据undo日志信息将修改过但没有提交的数据记录进行回滚(不提交到数据文件)。

3.2.Xtrabackup执行全备份的原理

当执行Xtrabackup程序开始备份时,Xtrabackup首先会记录当前redo日志的位置(即对应的LSN号),同时还会在后台启动一个进程持续监视redo日志文件的变化,并将变化的信息都记录到Xtrabackup_logfile中,之后就会针对所有的InnoDB数据文件进行备份(复制),待InnoDB数据文件备份完成之后,再执行“flush tables with read lock”命令对整个数据库锁表,然后备份(复制)MyISAM等非事务引擎的数据文件。待数据文件全部(包括InnoDB、MyISAM数据文件和redo日志数据记录)都备份完毕之后,获取binlog二进制日志位置点信息,最后执行unlock tables解锁命令,恢复整个数据库的可读写状态。

3.3.Xtrabackup执行全备份恢复的过程

当执行Xtrabackup工具恢复数据时,要经过准备恢复(prepare)和实际恢复(restore)两个步骤。在准备恢复过程结束后,InnoDB表的数据(即备份的物理文件)就恢复到了复制InnoDB文件结束时的时间点,这个时间点也是全库锁表复制MyISAM引擎数据时的起点,所以最终恢复的数据和数据库的数据是一致的。全备的数据有两部分,一部分是全备的物理文件,一部分是Xtrabackup log日志文件。

3.4.Xtrabackup执行增量备份的过程

Innobackupex增量备份的(仅对InnoDB引擎有效)核心就是复制全备之后的InnoDB中变更的“页”数据,复制时会以全备中xtrabackup_checkpoints文件对应的LSN号为依据,将大于给定的LSN号的页数据(就是增量数据)进行备份,因为要比对全备的LSN号,所以第一次增量备份是基于全备的,以后实施的每一次增量备份都要基于上一次的增量备份,最终实现备份的数据是连续的、无缺失的,针对MyISAM引擎的备份依然是锁表备份。

增量备份的过程:

首先在全备的xtrabackup_checkpoints logfile中找到并记录最后一个checkpoint(last checkpoint LSN),然后从该LSN的位置开始复制InnoDB的redo日志到Xtrabackup_logfile,然后开始复制全部的数据文件.ibd,待全部数据复制结束后,就停止复制logfile,增量备份的过程与全备基本类似,区别就是第二步,仅复制InnoDB中变化的页数据,而非所有物理文件。

3.5.Xtrabackup执行增量恢复的过程

增量数据的恢复过程与全量备份的恢复过程类似,所不同的是增量恢复是以全备份数据为基础的,增量恢复的数据主要涉及全备的数据、增量的数据、Xtrabackup_log日志文件。恢复过程是先将增量备份中变化的页数据应用到全备数据中,然后,读取Xtrabackup_log应用redo数据到全备数据中,同时回滚未提交的事务。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Xtrabackup工作原理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Xtrabackup工作原理

目录1.Xtrabackup介绍2.Xtrabackup备份涉及的数据库名词2.1.MySQL数据文件扩展名知识说明2.2.事务型引擎的ACID特性2.3.InnoDB引擎内部知识概念2.4.InnoDB引擎内部知识及说明2.5.InnoDB备份相关名词3.X
Xtrabackup工作原理
2020-09-08

Mybatis工作原理

作者:wuxinliulei链接:https://www.zhihu.com/question/25007334/answer/266187562来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。Mybatis原
2023-06-05
2024-04-02

MySQL xtrabackup 物理备份原理解析

目录一、简介二、xtrabackup备份原理:三、xtrabackup备份流程四、xtrabackup常用命令选项:五、xtrabackup备份实践六、xtrabackup备份日志分析七、xtrabackup备份的general_log分析
2022-12-21

[转]EJB 工作原理

前两天在这个版块的精华区里翻到了Robbin关于EJB的调用原理的分析,受益非浅,但感觉用纯文字来表达效果似乎不够直观,而且对RMI的阐述也略嫌少了些。这里我根据自己的一点体会,在Robbin帖子的基础上再来说说这个话题,供大家参考。首先,
2023-06-03

python pickle 工作原理

picklehttp://media.blackhat.com/bh-us-11/Slaviero/BH_US_11_Slaviero_Sour_Pickles_WP.pdfhttps://blog.nelhage.com/2011/03/
2023-01-31

FTP工作方式及其工作原理

  FTP(File Transfer Protocol,文件传输协议),是互联网最早的也是最基本的网络协议之一。用来将实现从一台电脑传送文件到另一台电脑,或者接收和查看另一台电脑上的文件。今天主要是介绍FTP工作方式以及其工作原理,有需要的朋友那就和我们进入下面的学习吧!  1、传输方式  ftp的传输有两种方式:a
FTP工作方式及其工作原理
2024-04-18

SELINUX工作原理详解

1. 简介SElinux带给Linux的主要价值是:提供了一个灵活的,可配置的MAC机制。 Security-Enhanced Linux (SELinux)由以下两部分组成: 1) Kernel SELinux模块(/ke
2022-06-04

Kubernetes API server工作原理

作为Kubernetes的使用者,每天用得最多的命令就是kubectl XXX了。kubectl其实就是一个控制台,主要提供的功能:1. 提供Kubernetes集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更;2.
2023-06-04

编程热搜

目录