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 文件。