Percona XtraBackup是世界上唯一的开源免费MySQL热备份软件,可为InnoDB和XtraDB数据库执行无阻塞备份。使用Percona XtraBackup,您可以获得以下好处:
备份快速可靠地完成
备份期间不间断的事务处理
节省磁盘空间和网络带宽
自动备份验证
由于更快的恢复时间,正常运行时间更长
Percona XtraBackup为所有版本的Percona Server,MySQL和MariaDB提供MySQL热备份。它执行流式,压缩和增量MySQL备份。
Percona XtraBackup可与MySQL,MariaDB和Percona Server配合使用。它支持InnoDB,XtraDB和HailDB存储引擎的完全非阻塞备份。此外,它还可以通过在备份结束时暂时暂停写入来备份以下存储引擎:MyISAM,Merge和Archive,包括分区表,触发器和数据库选项。
Percona的企业级商业MySQL支持合同包括对Percona XtraBackup的支持,建议在生产环境上部署。
Features | Percona XtraBackup | MySQL Enterprise backup |
---|---|---|
证书 | GPL | Proprietary |
价格 | Free | Included in subscription at $5000 per Server |
流和加密格式 | Open source | Proprietary |
支持的MySQL类型 | MySQL, Percona Server, MariaDB, Percona XtraDB Cluster, MariaDB Galera Cluster | MySQL |
支持的操作系统 | Linux | Linux, Solaris, Windows, OSX, FreeBSD. |
非阻塞InnoDB备份[1] | Yes | Yes |
阻塞MyISAM备份 | Yes | Yes |
增量备份 | Yes | Yes |
全压缩备份 | Yes | Yes |
增量压缩备份 | Yes | |
快速增量备份 [2] | Yes | |
Percona Server中的存档日志增量备份 | Yes | |
仅使用REDO日志进行增量备份 | Yes | |
备份锁 [8] | Yes | |
加密备份 | Yes | Yes [3] |
流式备份 | Yes | Yes |
并行本地备份 | Yes | Yes |
并行压缩 | Yes | Yes |
并行加密 | Yes | Yes |
并行应用日志 | Yes | |
并行复制 | Yes | |
部分复制 | Yes | Yes |
各个分区的部分备份 | Yes | |
节流 [4] | Yes | Yes |
备份image验证 | Yes | |
时间点恢复支持 | Yes | Yes |
安全从备份 | Yes | |
紧凑备份 [5] | Yes | |
缓冲池状态备份 | Yes | |
单个表导出 | Yes | Yes [6] |
单个分区导出 | Yes | |
将表还原到其他服务器 [7] | Yes | Yes |
数据和索引文件统计信息 | Yes | |
InnoDB二级索引碎片整理 | Yes | |
rsync支持最小化锁定时间 |
Yes | |
改进的FTWRL处理是 | Yes | |
备份历史记录表 | Yes | Yes |
备份进度表 | Yes | |
离线备份 | Yes | |
备份到磁带介质管理器 | Yes | |
云备份支持 | Amazon S3 | |
用于备份/恢复的外部图形用户界面 | Zmanda Recovery Manager for MySQL | MySQL Workbench, MySQL Enterprise Monitor |
[1]在复制非InnoDB数据时,InnoDB表仍处于锁定状态。
[2] Percona Server支持快速增量备份,并启用了XtraDB更改页面跟踪。
[3] Percona XtraBackup支持使用任何类型的备份进行加密。 MySQL Enterprise Backup仅支持单文件备份加密。
[4] Percona XtraBackup根据每秒的IO操作数执行限制。 MySQL Enterprise Backup支持操作之间可配置的休眠时间。
[5] Percona XtraBackup会跳过辅助索引页面,并在准备好紧凑备份时重新创建它们。 MySQL Enterprise Backup会跳过未使用的页面并重新插入准备阶段。
[6] Percona XtraBackup甚至可以从完整备份导出单个表,无论InnoDB版本如何。 MySQL Enterprise Backup仅在执行部分备份时使用InnoDB 5.6可传输表空间。
[7]使用Percona XtraBackup导出的表可以导入Percona Server 5.1,5.5或5.6+或MySQL 5.6+。使用MySQL Enterprise Backup创建的可传输表空间只能导入Percona Server 5.6 +,MySQL 5.6+或MariaDB 10.0+。
[8]备份锁是Percona Server 5.6+中提供的FLUSH TABLES WITH READ LOCK的轻量级替代品。 Percona XtraBackup自动使用它们来复制非InnoDB数据,以避免阻止修改InnoDB表的DML查询。
Percona XtraBackup基于InnoDB的崩溃恢复功能。它会复制您的InnoDB数据文件,从而导致内部不一致的数据;但随后它会对文件执行崩溃恢复,以使它们再次成为一致的可用数据库。
这是有效的,因为InnoDB维护一个重做日志,也称为事务日志。这包含对InnoDB数据的每次更改的记录。当InnoDB启动时,它会检查数据文件和事务日志,并执行两个步骤。它将已提交的事务日志条目应用于数据文件,并对修改数据但未提交的任何事务执行撤消操作。
Percona XtraBackup通过在启动时记住日志序列号(LSN),然后复制数据文件来工作。这需要一些时间,所以如果文件正在改变,那么它们会在不同的时间点反映数据库的状态。与此同时,Percona XtraBackup运行后台进程,监视事务日志文件,并从中复制更改。 Percona XtraBackup需要不断地执行此操作,因为事务日志是以循环方式编写的,并且可以在一段时间后重用。 Percona XtraBackup需要事务日志记录,以便在数据文件开始执行后对其进行每次更改。
Percona XtraBackup将使用备份锁定作为FLUSH TABLES WITH READ LOCK的轻量级替代品。 Percona Server 5.6+中提供此功能。 Percona XtraBackup自动使用它来复制非InnoDB数据,以避免阻止修改InnoDB表的DML查询。当服务器支持备份锁时,xtrabackup将首先复制InnoDB数据,运行LOCK TABLES FOR BACKUP并复制MyISAM表和.frm文件。完成此操作后,将开始备份文件。它将备份.frm,.MRG,.MYD,.MYI,.TRG,.TRN,.ARM,.ARZ,.CSM,.CSV,.par和.opt文件。
注意
锁定仅针对MyISAM和其他非InnoDB表进行,并且仅在Percona XtraBackup完成备份所有InnoDB / XtraDB数据和日志之后。 Percona XtraBackup将使用备份锁定作为FLUSH TABLES WITH READ LOCK的轻量级替代品。 Percona Server 5.6+中提供此功能。 Percona XtraBackup自动使用它来复制非InnoDB数据,以避免阻止修改InnoDB表的DML查询。
之后,xtrabackup将使用LOCK BINLOG FOR BACKUP来阻止可能更改二进制日志位置或Exec_Master_Log_Pos或Exec_Gtid_Set的所有操作(即,对应于复制从站上当前SQL线程状态的主二进制日志坐标),如SHOW MASTER / SLAVE STATUS所报告的。然后,xtrabackup将完成复制REDO日志文件并获取二进制日志坐标。完成此操作后,xtrabackup将解锁二进制日志和表。
最后,二进制日志位置将打印到STDERR,如果一切正常,xtrabackup将退出返回0。
请注意,xtrabackup的STDERR不会写入任何文件。您必须将其重定向到文件,例如,xtrabackup OPTIONS 2> backupout.log。
它还将在备份目录中创建以下文件。
在准备阶段,Percona XtraBackup使用复制的事务日志文件对复制的数据文件执行崩溃恢复。完成此操作后,数据库就可以恢复和使用了。
备份的MyISAM和InnoDB表最终会相互一致,因为在准备(恢复)过程之后,InnoDB的数据会前滚到备份完成的点,而不是回滚到它的位置。开始。此时间点与FLUSH TABLES WITH READ LOCK的位置匹配,因此MyISAM数据和准备好的InnoDB数据同步。
xtrabackup和innobackupex工具都提供了许多前面解释中没有提到的功能。本手册中将进一步详细介绍每种工具的功能。但简而言之,这些工具允许您使用复制数据文件,复制日志文件以及将日志应用于数据的各种组合来执行流式传输和增量备份等操作。
恢复备份
要使用xtrabackup还原备份,您可以使用xtrabackup --copy-back或xtrabackup --move-back选项。
xtrabackup将从my.cnf读取变量datadir,innodb_data_home_dir,innodb_data_file_path,innodb_log_group_home_dir并检查目录是否存在。
它将首先复制MyISAM表,索引等(.frm,.MRG,.MYD,.MYI,.TRG,.TRN,.ARM,.ARZ,.CSM,.CSV,par和.opt文件),接下来是InnoDB表和索引,最后是日志文件。它将在复制时保留文件的属性,您可能必须在启动数据库服务器之前将文件的所有权更改为mysql,因为它们将由创建备份的用户拥有。
或者,xtrabackup --move-back选项可用于恢复备份。此选项类似于xtrabackup 仅使用copy-back选项。
参考:1. xtrabackup简介: https://www.percona.com/doc/percona-xtrabackup/LATEST/intro.html