一、XtraBackup介绍
XtraBackup是percona公司使用Perl C/C++开发的开源工具,以热备Innodb表著称而被广泛采用,支持在线热备份(备份时不影响数据读写),是商业备份工具InnoDB Hotbackup的一个很好的替代品。
二、XtraBackup原理
XtraBackup对Innodb的备份之所以是热备,无需锁表,是基于Innodb自身的崩溃恢复机制,它首先复制所有的Innodb数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致。就和MySQL在启动Innodb的时候一样,会通过比较数据文件头和redo log文件头信息来检查数据是否是一致的,如果不一致就尝试通过前滚(把redo log中所有提交的事务写入数据文件)和回滚(从数据文件中撤销所有redo log中未提交的事务引起的修改)来使数据达到最终一致。
XtraBackup在启动的时候会记录一个LSN(log sequence number),然后就把所有的Innodb数据文件复制出来,这样复制出来的数据文件是不一致的,但是XtraBackup会在后台运行一个进程把所有对redo log file的修改记录下来,只要有了这个数据,就能进行崩溃恢复。只所以要额外记录下来,是因为MySQL自身的redo log file是可重用的。
以上的操作是由xtrabackup二进制程序(比如xtrabackup_55)完成的,如果使用innobackupex 脚本,刚才的步骤完成以后,innobackupex就会去备份MyISAM表和.frm文件,这时要保证数据的一致性就会先锁表了,通过FLUSH TABLES WITH READ LOCK命令锁表然后把文件复制出来,再释放掉这个锁。
在恢复数据的时候,要经过prepare(recovery)和restore两个步骤。在prepare结束以后,Innodb的表恢复到了复制Innodb文件结束的时间点,这个时间点也就是锁表复制MyISAM表的起点,所以最终数据是一致的。一般我们在恢复的时候执行两次prepare,是因为第二次prepare会帮助我们生成redo log文件,从而加快MySQL数据库启动的速度。
由于是热备份,当备份工具在拷贝innodb page的时候,数据库本身的进程也有可能在写这个page
那么备份工具拷贝出来的page,就有可能是坏的,也称为page 头尾不一致或是page断裂.这也就是为什么
普通的os复制工具不能用来做为数据库物理热备份的工具原因.
再看来看xtrbackup工具是怎么解决这一问题的.在备份开始的时候,xtrabackup会像普通的拷贝工具一样
去复制所有的innodb page,所以也会有page断裂的问题存在。xtrabackup在备份开始的时候,生成另
一个线程去拷贝当前的innodb的事务日志, 并同时监控innodb的事务日志文件,一旦有生成新的innodb的事务日志,也会同时写到xtrabckup自己的日志中去.
在备份结束后,xtrabacup得到的结果是一份有page断裂的数据文件和备份期间所有的innodb的事务日志.这个时候的情况和mysql实例崩溃的结果是一样的(实例崩溃后数据文件不完整,事务日志完整).xtrabackup还需要一个过程,称为prepare,这个过程所做的事情和mysql实例崩溃后所做的操作基本一致。利用坏的数据文件和事务日志进行rollback和forward操作。
xtrabckup本身链接了innodb相关的库,所在我们在prepare阶段看到innodb的启动和关闭信息,很类似于标准的mysql实例启动和关闭过程,实质是我们在prepare的时候,xtrabackup在调用innodb相关的代码进行实例恢复.prepare过后,xtrabackup备份文件就是一个一致性的数据拷贝,可以直接用来启动mysql。可以看到xtrabackup通过innodb的事务日志来和数据page,进行实例恢复,然后得到一致性的备份.而对于那些
非innodb的表则无能为力了,因为没有事务日志.所以我们可以看到在xtrackup备份Myisam的表,还是需要只读表锁来进行锁定,然后再备份数据文件,和普通的拷贝工具无异.
Xtrabackup有两个主要的工具:xtrabackup、innobackupex
(1)xtrabackup只能备份InnoDB和XtraDB两种数据表,而不能备份MyISAM数据表
(2)innobackupex-1.5.1则封装了xtrabackup,是一个脚本封装,所以能同时备份处理innodb和myisam,但在处理myisam时需要加一个读锁
相关推荐
本教程将详细介绍如何使用`xtrabackup`结合Shell脚本来实现MySQL数据库的备份与还原。 首先,我们需要理解`xtrabackup`的工作原理。`xtrabackup`通过读取InnoDB的数据文件和Redo日志,生成一个完整的物理备份。由于...
《使用Xtrabackup 2.4.4恢复MySQL数据库》 在MySQL数据库管理中,数据的安全性和可恢复性是至关重要的。Percona Xtrabackup是一款强大的开源工具,专为InnoDB和XtraDB存储引擎提供热备份解决方案。本文将详细阐述...
MySQL数据库的备份与恢复是确保数据安全性的重要环节。在本测试报告中,主要涉及了全量备份和增量备份的恢复过程,并对恢复后的数据进行了验证。以下是对这些知识点的详细说明: 1. **全量备份**:全量备份是数据库...
总之,这门课程涵盖了MySQL数据库运维的各个方面,从基础的系统规划和安装,到复杂的性能优化和安全控制,再到关键的备份与恢复策略,旨在培养出具备全面MySQL运维能力的专业人士。通过深入学习,学员将能够应对各种...
总之,xtrabackup是MySQL数据库备份的有力工具,尤其在处理InnoDB表时,其热备份能力和增量备份特性使其在高可用性环境中表现出色。对于MyISAM表,尽管性能稍逊,但仍能保证数据的一致性。理解这些备份策略和工具的...
MySQL数据库的自动定时备份是数据库管理中的重要环节,它确保了数据的安全性和可恢复性,尤其是在发生意外情况如系统故障、硬件损坏或人为错误时。本教程将详细讲解如何设置MySQL数据库的自动定时备份,包括步骤、所...
然而,数据库的意外丢失或损坏可能带来严重的后果,因此掌握如何恢复MySQL数据库至关重要。本篇将详细介绍面对数据库丢失或损坏时的处理方法。 首先,了解MySQL数据库丢失或损坏的原因是关键。这可能源自硬件故障、...
MySQL数据库DBA宝典手册是一本专为数据库管理员(DBA)设计的中文参考资料,它涵盖了MySQL系统管理的各个方面,是全面学习MySQL技术的理想选择。MySQL作为世界上最流行的开源关系型数据库管理系统之一,其管理和优化...
MySQL数据库的备份是确保数据安全的关键环节,而Xtrabackup则是专为InnoDB存储引擎设计的高效、可靠的热备份工具。它由Percona公司开发,不仅支持MySQL,还适用于Percona Server和MariaDB,是一款开源且免费的解决...
Percona XtraBackup是MySQL数据库管理系统的一个重要工具,专门用于高效、无损的数据备份。它在MySQL社区中广受欢迎,特别是在需要对InnoDB存储引擎进行热备份的场景下。这款工具的独特之处在于它可以在不中断服务的...
Xtrabackup 2.4 是 Percona 公司开发的一款开源热备份工具,特别适用于 InnoDB 存储引擎的 MySQL 数据库,能够实现无中断的数据备份和恢复,保障业务连续性和数据安全性。 首先,让我们深入了解 MySQL 5.7.28 的...
总结来说,MySQL备份学习之xtrabackup软件主要关注如何使用Xtrabackup这款工具进行无锁备份和高效恢复,保证MySQL数据库的安全和业务的连续性。通过理解和熟练掌握Xtrabackup的使用,我们可以更好地管理和保护我们的...
本篇文章将详细介绍如何配置定时备份MySQL数据库,包括每日、每周和每月的备份策略。 首先,我们需要了解MySQL提供的几种备份方式: 1. **mysqldump**:这是最常用的一种命令行工具,可以导出数据库结构和数据为...
Xtrabackup全备是指使用Xtrabackup工具对整个MySQL数据库进行备份,包括所有数据库、表、索引、视图等所有对象。 在这个示例中,我们使用Xtrabackup全备+binlog增备恢复整个数据库。首先,我们需要安装MySQL数据库...
MySQL-xtrabackup 是一个开源的热备份工具,能够在不中断 MySQL 服务的情况下备份数据,而 MySQL 5.7 binlog 则能够记录数据库的所有修改操作,通过这两个工具的结合,我们可以实现在数据即时点恢复。 首先,我们...
《MySQL数据库巡检手册》是一本专注于MySQL数据库管理和维护的专业指南。这本手册旨在帮助数据库管理员(DBA)以及IT专业人员系统地进行MySQL数据库的日常检查与优化工作,确保数据库系统的稳定、高效运行。MySQL...
MySQL数据库是世界上最受欢迎的开源关系型数据库管理系统之一,其稳定性和高效性使其在各种规模的企业中得到广泛应用。在日常操作中,对数据库进行备份和恢复是保障数据安全、防止意外丢失的重要环节。本文将深入...
在Linux环境下进行MySQL数据库编程是一项基础且至关重要的技能,尤其对于系统管理员和开发人员来说。MySQL是一种流行的开源关系型数据库管理系统(RDBMS),它以其高效、可靠和易用性而受到广泛赞誉。本讲义将围绕...
本文旨在为MySQL数据库用户介绍常见的备份策略及具体实施步骤,帮助大家更好地理解和掌握MySQL数据库备份技巧。 #### 二、MySQL备份基础知识 ##### 2.1 备份类型 MySQL备份主要分为两种类型:逻辑备份和物理备份...