mysql中的XtraBackup的备份原理

xtrabackup的官方下载地址为 :

http://www.percona.com/software/percona-xtrabackup。

xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下:

1 xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表
2 innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加一个全局的读锁。还有就是myisam不支持增量备份。

innobackupex工具的备份过程原理图

如图,备份开始的时候

1 首先会启动一个xtrabackup_log后台检测的进程,实时检测mysql redo的变化,一旦发现redo有新的日志写入,立刻将日志写入到日志文件xtrabackup_log中

2 复制innodb的数据文件和系统表空间文件idbdata1到对应的以默认时间戳为备份目录的地方

3 复制结束后,执行flush table with read lock操作

4 复制.frm .myd .myi文件

5 并且在这一时刻获得binary log 的位置

6 将表进行解锁unlock tables

7 停止xtrabackup_log进程

全库恢复的过程
这一阶段会启动xtrabackup内嵌的innodb实例,将xtrabackup日志xtrabackup_Log进行回放,将提交的事务信息变更应用到innodb数据或表空间,同时回滚未提交的事务

增量备份

增量备份主要是通过拷贝innodb中有变更的页(指的是LSN大于xtrabackup_checkpoints中的LSN号)。增量备份是基于全备的,第一次增量备份的数据是基于上一次全备,之后的每一次增倍都是基于上一次的增倍,最终达到一致性的增倍,增倍的过程中,和全备很类似,区别在于第二步

增量备份的恢复

和全库恢复类似,也需要两步

1 数据文件的恢复 分3部分 全备 增量备份和xtrabackup_log

2 对未提交事务的回滚

innobackupex的使用案例

1 创建备份用户

进行数据库全备

使用以下参数进行全库备份

查看对应生成的文件

需要注意的几个文件

删掉某个数据库,进行全库恢复

关闭数据库

恢复

以上对应的目录就是innobackupex全备份自己创建的目录

更改权限

[[email protected]_03 tmp]# chown -R mysql.mysql /data/3306/data/

启动mysqld

[[email protected]_03 tmp]# /etc/init.d/mysqld start

发现数据是已经成功恢复

先全备

增量备份

此时再插入数据

增量备份2

增量备份的恢复

增量备份的恢复需要有3个步骤

1 恢复完全备份

2 恢复增量备份到完全备份(开始恢复的增量备份要添加--redo-only参数,到最后一次增量备份要去掉--redo-only)

3 对整体的完全备份进行恢复,回滚未提交的数据

模拟测试

测试完毕,恢复还是比较简单的。

时间: 2024-10-09 22:09:10

mysql中的XtraBackup的备份原理的相关文章

学一点 MYSQL 双机异地热备份—-MYSQL主从,主主备份原理及实践

简单介绍mysql双机,多机异地热备简单原理实战. 双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量.  对于异地热备,尤其适合灾备.废话不多说了.我们直接进入主题. 我们会主要介绍两部分内容: 一, mysql 备份工作原理 二, 备份实战 我们开始. 我使用的是my

聊一聊 MySQL 中的事务及其实现原理

原文:聊一聊 MySQL 中的事务及其实现原理 说到数据库,那就一定会聊到事务,事务也是面试中常问的问题,我们先来一个面试场景: 面试官:"事务的四大特性是什么?" 我:"ACID,即原子性(Atomicity).隔离性(Isolation).持久性(Durability).一致性(Consistency)!" 面试官:"在 MySQL 数据库的 InnoDB 引擎是怎么实现这四大特性的?" 我:"这个...这个....,还真没有了解过

MySQL中的xtrabackup的原理解析

xtrabackup的官方下载地址为 http://www.percona.com/software/percona-xtrabackup. xtrabackup包含两个主要的工具,即xtrabackup和innobackupex,二者区别如下: 1 xtrabackup只能备份innodb和xtradb两种引擎的表,而不能备份myisam引擎的表: 2 innobackupex是一个封装了xtrabackup的Perl脚本,支持同时备份innodb和myisam,但在对myisam备份时需要加

XtraBackup的备份原理与应用示例

一.XtraBackup简介与安装 XtraBackup是一款免费的在线开源数据库备份解决方案,适用于所有版本的MySQL和MariaDB.XtraBackup支持对InnoDB热备,是一款物理备份工具.可对数据库做完全备份.部分备份.增量备份.差异备份. 1.备份的实现原理 InnoDB存储引擎是基于表空间(table space)进行存储的,表空间中被分成多个块(盘区),将数据分散存储至这些盘区中,每个盘区都有自己的编号,每当数据修改一次,日志序列号就增加1.在完全备份时,是将所有的盘区进行

编译安装mysql和zabbix,xtrabackup数据库备份

xtrabackup参考文章 https://www.cnblogs.com/linuxk/p/9372990.html ? ? ? ? 下载5.7的mysql 社区版包 https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar ? ? 如果是redhat7系统需要删除mariadb的包 使用以下命令检查并删除mariadb包 rpm -e --nodeps $(rpm -qa | gr

MySQL数据库之xtrabackup物理备份(一)

前言:说到数据库备份,我们知道可以用来对数据库进行备份的工具有mysqldump.mydumer.mysqlpump等等,实际工作中,机器上的数据库不大的话,都是用mysqldump工具来备份,这些备份工具各有优缺点,这里不详细介绍,今天分享另一个数据库备份工具,叫XtraBackup. 一.Xtrabackup介绍 1.官网说明 Percona XtraBackup可以在不阻止用户查询的情况下实现MySQL备份,因此非常适合拥有大数据集和无法承受长时间停机的关键任务应用程序的公司.作为开源解决

学一点 mysql 双机异地热备份----快速理解mysql主从,主主备份原理及实践

双机热备的概念简单说一下,就是要保持两个数据库的状态自动同步.对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库数据一致. 这样做的好处多. 1. 可以做灾备,其中一个坏了可以切换到另一个. 2. 可以做负载均衡,可以将请求分摊到其中任何一台上,提高网站吞吐量.  对于异地热备,尤其适合灾备.废话不多说了.我们直接进入主题. 我们会主要介绍两部分内容: 一, MySQL 备份工作原理 二, 备份实战 我们开始. 我使用的是mysql 5.5.34, 一, mysql 备份工作原

mysqldump和xtrabackup备份原理实现说明

背景: MySQL数据库备份分为逻辑备份和物理备份两大类,犹豫到底用那种备份方式的时候先了解下它们的差异: 逻辑备份的特点是:直接生成SQL语句,在恢复的时候执行备份的SQL语句实现数据库数据的重现. 物理备份的特点是:拷贝相关数据文件. 这二种备份差异 :逻辑备份其备份.还原慢,但备份文件占用的空间小:物理备份其备份还原快,备份文件占用空间大. 到底选择那种备份方式,具体根据自己的实际情况,如需要的是热备还是冷备?数据量大不大?磁盘空间够不够等因素决定. 逻辑备份工具主要有:mysqldump

MySQL 採用Xtrabackup对数据库进行全库备份

1,xtrabackup简单介绍 关于数据库备份以及备份工具.參考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经怎样使用xtrabackup进行对数据库的全备份已经恢复. 2,xtrabackup下载 下载地址为:http://www.percona.com/downloads/XtraBackup/ Chorm浏览器以下.在"DOWNLOADPERCONA XTRABACKUP"以下,选择版本号