Percona XtraBackup原理详解

一 简介

Percona XtraBackup是一个开源的MySQL数据库热备工具,允许你在备份的时候不锁表。支持备份的存储引擎有InnoDB, XtraDB, MyISAM ;支持的MySQL版本 5.1 5.5, 5.6 , 5.7;无论是7X24的高负载数据库环境,还是低TPS的数据库环境,Percona XtraBackup都能完成备份而不影响生产环境

Percona XtraBackup是世界上唯一开源免费的MySQL热备工具,可以对InnoDB 和 XtraDB存储引擎的表进行非堵塞备份。

二 备份特点

1 快速可靠完成备份

2 备份期间不会打断正在进行的事务

3 由于有压缩备份选项可以节省磁盘空间和网络带宽

4 自动的备份校验

5 更快的恢复速度,更短的恢复时间

三  备份原理

Percona XtraBackup是基于Innodb的 crash-recovery功能。在备份的过程中,XtraBackup拷贝Innodb的数据文件,但是在拷贝数据文件的过程中,数据库一直在运行,会有增删改的操作,这样会造成拷贝的数据文件中的数据状态是不一致的。但随后会对文件进行crash recovery,是数据恢复一致。(原理是基于crash-recovery)

Innodb维护了一个redo log,又叫做transaction log(事务日志),包含了数据文件的所有变化,当Innodb启动的时候,会检查数据文件和redo log,然后做两件事:将已提交的事务应用到数据文件,对修改了数据但未提交的事务回滚。(应用已提交,回滚未提交)

当Percona XtraBackup开始备份的时候,会记住日志的日志序列号(LSN),然后开始拷贝数据文件。拷贝这些文件需要花费一定时间,当在拷贝过程中,数据文件可能会发生变化,所以你的备份就是不同时间点的数据状态,即数据不一致了。Percona XtraBackup是如何解决这个问题的呢?与此同时,Percona XtraBackup在后台会另外启动一个进程,监控事务日志文件然后从中拷贝变化。Percona XtraBackup要不断进行此操作,因为redo log 是循环写的,写完之后会被覆盖重写。Percona XtraBackup需要从启动备份后redo log的每次变化。(两个进程 一个进程拷贝数据文件,一个进程通过日志文件拷贝变化)

完成innodb引擎的数据文件备份后,会进行非Innodb引擎表的备份。Percona MySQL 5.6 有backup locks,Percona XtraBackup利用此功能替代FLUSH TABLES WITH READ LOCK,这样就可以避免堵塞Innodb表的DML操作。

总结备份过程:

1 首先拷贝Innodb表的数据文件(利用两个进程 一个拷贝文件一个拷贝变化)

2 如果支持 backup lock,利用LOCK TABLE FOR BACKUP拷贝非Innodb表的数据文件(percona MySQL 5.6+ 支持oracle的MySQL支持吗?)

3 使用 LOCK BINLOG FOR  BACKUP 禁止所有改变Exec_Master_Log_Pos 或 Exec_Gtid_Set的操作。完成redo log的备份和获取binlog的日志中的坐标输出到备份目录。然后释放锁

四 恢复原理

恢复备份可以利用 xtrabackup --copy-back  或 xtrabackup --move-back选项。

首先读取配置文件my.cnf中参数datadir, innodb_data_home_dir, innodb_data_file_path, innodb_log_group_home_dir并检查目录是否存在。然后恢复MyISAM表,索引等,随后恢复Innodb的表和索引。

需要注意的时候在恢复完成后需要修改目录的属组属主,例如:chown -R mysql.mysql  dir

--copy-back 复制备份文件到恢复目录

--move-back 将备份文件移动到恢复目录,主要这个会删除备份文件,在磁盘空间不足的时候可以使用

 

参考资料:

官方文档 https://www.percona.com/doc/percona-xtrabackup/2.4/how_xtrabackup_works.html

博客:https://www.cnblogs.com/zhoujinyi/p/5888271.html

阿里云数据库内核月报 http://mysql.taobao.org/monthly/2016/03/07/

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Percona XtraBackup是一个用于MySQL和MariaDB数据库的备份工具。它具有以下特点: 1. 备份过程快速、可靠; 2. 备份过程不会打断正在执行的事务; 3. 可以通过压缩等功能来节约磁盘空间和流量; 4. 自动实现备份检验; 5. 还原速度快。 你可以从Percona官方网站上下载Percona XtraBackup的安装包。下载地址为:https://www.percona.com/downloads/,你也可以在官方文档上找到更多关于Percona XtraBackup的信息,文档链接为:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html#user-s-manual。如果你需要了解Percona XtraBackup的参数说明,可以参考这个链接:https://www.percona.com/doc/percona-xtrabackup/LATEST/xtrabackup_bin/xbk_option_reference.html。 要安装Percona XtraBackup,你可以执行以下步骤: 1. 下载Percona XtraBackup安装包,可以使用wget命令下载,命令如下: 2. 解压下载的安装包,可以使用tar命令解压,命令如下: 3. 将解压后的文件复制到适当的位置,例如/usr/local/xtrabackup目录。 以上就是关于Percona XtraBackup的介绍和安装步骤。希望对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Percona XtraBackup](https://blog.csdn.net/w892824196/article/details/80644377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [percona-xtrabackup-数据库备份工具学习使用](https://blog.csdn.net/xiaoma19961101/article/details/119571385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DBA之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值