备份作业完成后,备份文件可能不会立即处于一致状态,因为在备份运行时可能会插入、更新或删除数据。这些初始备份文件称为原始备份。您必须更新备份文件,以便它们反映与特定 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-back
copy-back-and-apply-log
示例 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
目录中的数据文件在增量备份时是完全最新的。