5.1 准备要恢复的备份

备份作业完成后,备份文件可能不会立即处于一致状态,因为在备份运行时可能会插入、更新或删除数据。这些初始备份文件称为原始备份。您必须更新备份文件,以便它们反映与特定 InnoDB日志序列号对应的数据库状态(在崩溃恢复期间发生相同类型的操作 )。完成此步骤后,这些最终文件称为 准备好的备份

在备份期间,mysqlbackup将累积的 InnoDB 日志复制到一个名为 ibbackup_logfile. 该日志文件用于 前滚备份的数据文件,使数据文件中的每一页都对应于 InnoDB 日志的相同日志序号。此阶段还会创建 ib_logfiles与数据文件相对应的新文件。

将原始备份转换为准备好的备份 的mysqlbackupapply-log选项是. 您可以在执行备份的同一数据库服务器上运行此步骤,或者先将原始备份文件传输到不同的系统,以限制数据库服务器上的 CPU 和存储开销。

笔记

由于apply-log操作不会修改备份中的任何原始文件,因此如果由于某种原因(例如,磁盘空间不足)操作失败,不会丢失任何内容。解决问题后,您可以安全地重试apply-log,并通过指定--force选项允许 apply-log覆盖失败操作创建的数据和日志文件。

对于简单的目录备份(非压缩和非增量),您可以将初始备份和 使用命令 的apply-log步骤 结合起来。backup-and-apply-log

您还可以使用单个 命令 执行apply-log和 (恢复准备好的备份)。copy-backcopy-back-and-apply-log

示例 5.1 将日志应用到备份

此示例运行mysqlbackup以前滚数据文件,以便数据已准备好恢复:

mysqlbackup --backup-dir=/export/backups/2011-06-21__8-36-58 apply-log

该命令在备份目录中创建 InnoDB 日志文件 ( ib_logfile*),并将日志记录应用于 InnoDB 数据文件 (ibdata**.ibd)。


示例 5.2 将日志应用于压缩备份

如果备份是压缩的,如 第 4.3.3 节“制作压缩备份”中所述,在将日志应用到备份时 指定 mysqlbackup--uncompress的选项 :

mysqlbackup --backup-dir=/export/backups/compressed --uncompress apply-log


示例 5.3 将增量备份应用于完整备份

在按照 第 4.3.2 节“进行差异备份或增量备份”中所述进行增量备份后,必须将这些备份文件中反映的更改应用到完整备份以使完整备份保持最新,在与从二进制日志应用更改的方式相同。

要使完整备份中的数据文件保持最新,首先运行应用日志步骤,以便数据文件将包含完整备份运行时发生的任何更改。然后将增量备份的更改应用到完全备份产生的数据文件:

mysqlbackup --backup-dir=/export/backups/full apply-log
mysqlbackup --backup-dir=/export/backups/full \
  --incremental-backup-dir=/export/backups/incremental \
  apply-incremental-backup

现在full-backup 目录中的数据文件在增量备份时是完全最新的。