一、Percona Xtrabackup概述
Percona XtraBackup是世界上唯一一款开源的免费MySQL热备份软件,可以为InnoDB和XtraDB数据库执行非阻塞备份。
使用Percona XtraBackup,您可以获得以下好处:
快速可靠地完成备份
备份期间不间断的事务处理
节省磁盘空间和网络带宽
自动备份验证
由于恢复时间更快,正常运行时间更长
Percona XtraBackup对所有版本的Percona Server for MySQL和MySQL进行MySQL热备份。它执行流式、压缩和增量MySQL备份。
注意:
随着Percona XtraBackup 8.0的推出,Percona XtraBackup 2.4将继续支持MySQL和Percona Server 5.6和5.7数据库。由于新的MySQL重做日志和数据字典格式,Percona XtraBackup 8.0.x版本将只与MySQL8.0.x和即将推出的用于MySQL8.0.x的Percona服务器兼容
1、支持的存储引擎
Percona XtraBackup可以与MySQL和Percona Server for MySQL协同工作。它支持InnoDB、XtraDB和MyRocks存储引擎的完全无阻塞备份。此外,它还可以通过在备份结束时短暂暂停写入操作来备份以下存储引擎:MyISAM、Merge和Archive,包括分区表、触发器和数据库选项。
注意:
MyRocks存储引擎的支持在版本8.0.6中添加。
Percona XtraBackup 8.0不支持TokuDB存储引擎。
2、MySQL备份工具特性比较
Features | Percona XtraBackup | MySQL Enterprise backup |
---|---|---|
License | GPL | Proprietary |
Price | Free | Included in subscription at $5000 per Server |
Streaming and encryption formats | Open source | Proprietary |
Supported MySQL flavors | MySQL, Percona Server for MySQL, Percona XtraDB Cluster, | MySQL |
Supported operating systems | Linux | Linux, Solaris, Windows, OSX, FreeBSD. |
Non-blocking InnoDB backups [1] | Yes | Yes |
Blocking MyISAM backups | Yes | Yes |
Incremental backups | Yes | Yes |
Full compressed backups | Yes | Yes |
Incremental compressed backups | Yes | |
Fast incremental backups [2] | Yes | |
Incremental backups with archived logs feature in Percona Server | Yes | |
Incremental backups with REDO log only | Yes | |
Backup locks [7] | Yes (LOCK TABLE FOR BACKUP ) |
Yes (LOCK INSTANCE FOR BACKUP ) |
Encrypted backups(加密备份) | Yes | Yes [3] |
Streaming backups | Yes | Yes |
Parallel local backups | Yes | Yes |
Parallel compression | Yes | Yes |
Parallel encryption | Yes | Yes |
Parallel apply-log | Yes | |
Parallel copy-back | Yes | |
Partial backups | Yes | Yes |
Partial backups of individual partitions | Yes | |
Throttling [4](限流) | Yes | Yes |
Backup image validation(备份映像验证) | Yes | |
Point-in-time recovery support | Yes | Yes |
Safe slave backups | Yes | |
Compact backups [5] | Yes | |
Buffer pool state backups | Yes | |
Individual tables export(个别表导出) | Yes | Yes [6] |
Individual partitions export | Yes | |
Restoring tables to a different server | Yes | Yes |
Data & index file statistics | Yes | |
InnoDB secondary indexes defragmentation(InnoDB二级索引碎片整理) | Yes | |
rsync support to minimize lock time(支持最小化锁定时间) |
Yes | |
Improved FTWRL handling |
Yes | |
Backup history table | Yes | Yes |
Backup progress table | Yes | |
Offline backups | Yes | |
Backup to tape media managers(备份到磁带介质管理器) | Yes | |
Cloud backups support | Amazon S3 | |
External graphical user interfaces to backup/recovery(用于备份/恢复的外部图形用户界面) | Zmanda Recovery Manager for MySQL | MySQL Workbench, MySQL Enterprise Monitor |
[1]复制非InnoDB数据时,InnoDB表仍然被锁定。
[2]Percona Server for MySQL支持快速增量备份,支持XtraDB更改页面跟踪。
[3]Percona XtraBackup支持对任何备份进行加密。MySQL企业备份只支持对单个文件备份进行加密。
[4]Percona XtraBackup根据每秒IO操作数执行限制。MySQL企业备份支持操作之间的可配置睡眠时间。
[5]Percona XtraBackup跳过辅助索引页,并在准备压缩备份时重新创建它们。MySQL Enterprise Backup跳过未使用的页并重新插入到准备阶段。
[6]Percona XtraBackup甚至可以从完整备份中导出单个表,无论InnoDB版本如何。MySQL Enterprise Backup仅在执行部分备份时使用InnoDB 5.6可移植表空间。
[7]备份锁是用Percona Server for MySQL中的读锁刷新表的轻量级替代方法。Percona XtraBackup使用它们自动复制非InnoDB数据,以避免阻塞修改InnoDB表的DML查询。
3、Percona XtraBackup有什么特点?
在不暂停数据库的情况下创建热的InnoDB备份
对MySQL进行增量备份
将压缩的MySQL备份流式传输到另一台服务器
在MySQL服务器之间在线移动表
轻松创建新的MySQL复制从属服务器
在不向服务器添加负载的情况下备份MySQL
二、Percona XtraBackup备份工作原理
1、Percona XtraBackup备份工作原理
Percona XtraBackup基于InnoDB的崩溃恢复功能。它复制您的InnoDB数据文件,这会导致数据在内部不一致;但随后它会对这些文件执行崩溃恢复,使它们再次成为一致的、可用的数据库。
这是因为InnoDB维护一个重做日志,也称为事务日志。它包含对InnoDB数据的每次更改的记录。当InnoDB启动时,它检查数据文件和事务日志,并执行两个步骤。它将提交的事务日志条目应用于数据文件,并对修改数据但未提交的任何事务执行撤消操作。
Percona XtraBackup的工作原理是在启动时记住日志序列号(LSN),然后复制数据文件。这样做需要一些时间,因此如果文件正在更改,那么它们将反映数据库在不同时间点的状态。同时,Percona XtraBackup运行一个后台进程来监视事务日志文件,并从中复制更改。PerconaXtrabackup需要不断地这样做,因为事务日志是以循环方式编写的,并且可以在一段时间后重用。Percona XtraBackup自开始执行以来,每次对数据文件的更改都需要事务日志记录。
Percona XtraBackup使用备份锁(如果有的话)作为一种轻量级的替代方法来使用读锁刷新表。Percona Server for MySQL 5.6+中提供了此功能。MySQL 8.0允许通过lock instance FOR backup语句获取实例级备份锁。
只有在Percona XtraBackup完成对所有InnoDB/XtraDB数据和日志的备份后,才会对MyISAM和其他非InnoDB表执行锁定。Percona XtraBackup会自动复制非InnoDB数据,避免阻塞修改InnoDB表的DML查询。
注意
为了要有效地使用LOCK INSTANCE FOR BACKUP or LOCK TABLES FOR BACKUP,需要BACKUP_ADMIN权限才能查询performance_schema.log_status。
当实例只包含InnoDB表时,xtrabackup试图避免使用备份锁并用读锁刷新表。在这种情况下,xtrabackup从performance_schema.log_status获取二进制日志坐标。使用--slave info启动xtrabackup时,MySQL 8.0中仍然需要使用FLUSH TABLES WITH READ LOCK。Percona Server for MySQL8.0中的log_status表被扩展为包含中继日志坐标,因此即使使用--slave info选项也不需要锁。
2、Percona XtraBackup备份步骤
1)当服务器支持备份锁时,xtrabackup首先复制InnoDB数据,运行LOCK TABLES FOR BACKUP
,然后复制MyISAM表。
2)完成后,将开始备份文件。它将备份.frm、.MRG、.MYD、.MYI、.ARM、.ARZ、.CSM、.CSV、.sdi和.par文件。
3)在此之后,xtrabackup将使用LOCK BINLOG FOR BACKUP
,以阻止所有可能更改二进制日志位置或Exec_Master_log_Pos或Exec_Gtid_Set(即,主二进制日志坐标对应于复制从机上的当前SQL线程状态)的操作,如SHOW Master/slave STATUS所报告的。然后,xtrabackup将完成复制重做日志文件并获取二进制日志坐标。完成后,xtrabackup将解锁二进制日志和表。
4)最后,二进制日志位置将被打印到STDERR
,如果所有操作都正常,则返回0。
请注意,xtrabackup的STDERR没有写入任何文件。您必须将其重定向到一个文件,例如xtrabackup OPTIONS 2>backupout.log。
三、Percona XtraBackup恢复工作原理
一、Percona Xtrabackup概述
Percona Xtrabackup是一个开源的热备份工具,用于基于MySQL的服务器,在备份过程中不会锁定数据库。
无论是24x7高负载的服务器还是低事务量的环境,Percona XtraBackup都旨在使备份成为一个无缝的过程,而不会中断服务器在生产环境中的性能。提供商业支持合同。
Percona XtraBackup可以备份MySQL8.0服务器上InnoDB、XtraDB、MyISAM和MyRocks表的数据,也可以备份带有XtraDB的MySQL Percona服务器、MySQL8.0的Percona服务器和Percona XtraDB集群8.0的数据。
注意:
1、MyRocks存储引擎的支持在版本8.0.6中添加。
2、Percona XtraBackup 8.0不支持TokuDB存储引擎。
3、Percona XtraBackup 8.0不支持对MySQL 8.0之前版本、Percona Server for MySQL或Percona XtraDB Cluster中创建的数据库进行备份。由于MySQL8.0在数据字典、重做日志和撤消日志中引入的更改与以前的版本不兼容,目前Percona XtraBackup 8.0不可能同时支持8.0之前的版本。