xtrabackup备份原理

物理备份(Xtrabackup)

相对于逻辑备份利用查询提取数据中的所有记录,物理备份更直接,拷贝数据库文件和日志来完成备份,因此速度会更快。当然,无论是开源的Mydumper还是官方最新的备份工具(5.7.11的mysqlpump)都支持了多线程备份,所以速度差异可能会进一步缩小,至少从目前生产环境来看,物理备份使用还是比较多的。由于Xtrabackup支持备份innodb表,实际生产环境中我们使用的工具是innobackupex,它是对xtrabackup的一层封装。innobackupex 脚本用来备份非 InnoDB 表,同时会调用 xtrabackup 命令来备份 InnoDB 表,innobackupex的基本流程如下: 
1.开启redo日志拷贝线程,从最新的检查点开始顺序拷贝redo日志; 
2.开启ibd文件拷贝线程,拷贝innodb表的数据 
3.ibd文件拷贝结束,通知调用FTWRL,获取一致性位点 
4.备份非innodb表(系统表)和frm文件 
5.由于此时没有新事务提交,等待redo日志拷贝完成 
6.最新的redo日志拷贝完成后,相当于此时的innodb表和非innodb表数据都是最新的 
7.获取binlog位点,此时数据库的状态是一致的。 
8.释放锁,备份结束。

完整备份过程如图:: 

Xtrabackup的改进

无论是mysqldump,还是innobackupex备份工具,为了获取一致性位点,都强依赖于FTWRL。这个锁杀伤力非常大,因为持有锁的这段时间,整个数据库实质上不能对外提供写服务的。此外,由于FTWRL需要关闭表,如有大查询,会导致FTWRL等待,进而导致DML堵塞的时间变长。即使是备库,也有SQL线程在复制来源于主库的更新,上全局锁时,会导致主备库延迟。从前面的分析来看,FTWRL这把锁持有的时间主要与非innodb表的数据量有关,如果非innodb表数据量很大,备份很慢,那么持有锁的时间就会很长。即使全部是innodb表,也会因为有mysql库系统表存在,导致会锁一定的时间。 
为了解决这个问题,Percona公司对Mysql的Server层做了改进,引入了BACKUP LOCK。 
具体而言,通过”LOCK TABLES FOR BACKUP”命令来备份非innodb表数据;通过”LOCK BINLOG FOR BACKUP”来获取一致性位点,尽量减少因为数据库备份带来的服务受损。我们看看采用这两个锁与FTWRL的区别:

LOCK TABLES FOR BACKUP

作用:备份数据 
1.禁止非innodb表更新 
2.禁止所有表的ddl 
优化点: 
1.不会被大查询堵塞(关闭表) 
2.不会堵塞innodb表的读取和更新,这点非常重要,对于业务表全部是innodb的情况,则备份过程中DML完全不受损 
UNLOCK TABLES

LOCK BINLOG FOR BACKUP

作用:获取一致性位点。 
1.禁止对位点更新的操作 
优化点: 
1.允许DDl和更新,直到写binlog为止。 
UNLOCK BINLOG

准备和恢复数据阶段

过程如图: 
首先应用xtrabackup日志提交事务应用到InnoDB,然后回滚未提交事务。 

增量备份过程

对于增量备份只对InnoDB,MyISAM和其它引擎仍然是完整备份的方式,增量备份主要是处理InnoDB中有变更的页(页的LSN).LSN信息在xtrabackup_checkpoints中。 

增量应用

恢复过程

流备份过程图

InnoDB表空间的结构

参考文章: 
1.MySQL备份原理详解 
http://www.cnblogs.com/cchust/p/5452557.html

原文地址:https://www.cnblogs.com/chinaops/p/9381649.html

时间: 2024-10-09 01:01:31

xtrabackup备份原理的相关文章

mysqldump和xtrabackup备份原理实现说明

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

Percona XtraBackup 备份原理说明【转】

本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQL(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Lau

xtrabackup 备份原理

xtraback是物理备份,非阻塞在线实时备份1.优点: 备份速度很快 备份期间不中断事务 通过压缩节约网络和磁盘 自动备份验证 恢复快 官网提示: Fast and reliable backups Uninterrupted transaction processing during backups Savings on disk space and network bandwidth with better compression Automatic backup verification

MySQL-物理备份-Percona XtraBackup 备份原理

Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心. 工具集 软件包安装完后一共有4个可执行文件,如下: usr ├── bin │ ├── innobackupex │ ├── xbcrypt │ ├── xbstream │ └── xtrabackup 其中最主要的是 innobackupex 和 x

xtrabackup 备份恢复测试过程

参考: http://blog.csdn.net/justdb/article/details/17054579# MySQL备份与恢复之percona-xtrabackup软件的使用 http://blog.csdn.net/justdb/article/details/17054667# MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复 http://devliangel.blog.51cto.com/469347/1374232# 使用innobackupex在

MySQL之Xtrabackup备份恢复数据库-简介

一.Xtrabackup介绍 1.Xtrabackup是什么 Xtrabackup 是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品. Xtrabackup 有两个主要的工具:xtrabackup.innobackupex xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表. innobackupex是参考了InnoDB Hotbackup的innoback脚

xtrabackup备份还原mariadb数据库

一.xtrabackup 简介 xtrabackup 是由percona公司开源免费的数据库热备软件,它能对InnoDB数据库和XtraDB存储引擎的数据库非阻塞地备份,对于myisam的备份同样需要加表锁.mysqldump备份方式是通过用户名密码连接到数据库,将其要备份的数据库用SQL语句的形式输出到标准输出,这种逻辑备份的方式最大的缺点是备份和恢复的速度较慢,如果数据库过大,mysqldump备份就显得力不从心了.这时选择用xtrabackup来备份就能很好解决数据库过大而导致备份过慢的问

mysqldump,mydumper以及xtrabackup备份流程简述

mysqldump备份原理 备份的基本流程如下: 1.调用FTWRL(flush tables with read lock),全局禁止读写 2.开启快照读,获取此时的快照(仅对innodb表起作用) 3.备份非innodb表数据(*.frm,*.myi,*.myd等) 4.非innodb表备份完毕后,释放FTWRL锁 5.逐一备份innodb表数据 6.备份完成. Mydumper Mydumper原理与Mysqldump原理类似,最大的区别是引入了多线程备份,每个备份线程备份一部分表,当然并

xtrabackup备份恢复测试 -转

Chinaunix首页 | 论坛 | 认证专区 | 博客 登录 | 注册 博文      博主 王恒-Henryhengwang.blog.chinaunix.net 我的项目:https://github.com/HengWang/ ChinaUnix博客技术文章推荐标准和规范 有奖征集:文集--博客系列博文管理 CU博客频道6月技术图书有奖试读活动 首页 | 博文目录 | 关于我 king_wangheng 博客访问: 486455 博文数量: 117 博客积分: 1715 博客等级: 上尉