5.1.3 恢复增量备份

笔记

对于 MySQL Enterprise Backup 8.0.21 及更高版本: --incremental恢复增量备份时不再需要该选项。

在不同的场景下,使用增量备份来恢复数据库有不同的方式。首选方法是首先恢复完整备份并使用命令将其更新到执行完整备份时的时间 (有关如何执行此 操作的信息,copy-back-and-apply-log请参见 示例 5.1 “恢复数据库”copy-back-and-apply-log ),然后使用再次在刚刚恢复的完整备份之上恢复增量备份映像:

示例 5.6 恢复增量备份映像

mysqlbackup --defaults-file=<my.cnf> -uroot --backup-image=<inc_image_name> \
  --backup-dir=<incBackupTmpDir> --datadir=<restoreDir> --incremental \
  copy-back-and-apply-log


在这个例子中,命名的增量备份映像 <inc_image_name>被恢复到 <restoreDir>服务器上(增量备份映像所基于的完整备份已经被恢复)。该 --backup-dir选项用于指定保存临时输出、状态文件和备份元数据的临时目录。对您拥有的其他增量备份映像重复该步骤,直到数据已恢复到所需的时间点。

高级:恢复增量备份目录

增量目录备份可以通过一系列 copy-back-and-apply-log命令恢复,如上图所示的单文件备份。或者,在进行增量备份之后和恢复数据之前的任何时间,您都可以使完整备份与增量备份保持同步。首先,将备份运行时发生的任何更改应用于完整备份:

$ mysqlbackup --backup-dir=/full-backup/2010-12-08_17-14-11 apply-log
..many lines of output...
101208 17:15:10  mysqlbackup: Full backup prepared for recovery successfully!

101208 17:15:10 mysqlbackup: mysqlbackup completed OK!

然后,我们使用以下 apply-incremental-backup命令应用增量备份中的更改:

$ mysqlbackup --incremental-backup-dir=/incr-backup/2010-12-08_17-14-48 \
  --backup-dir=/full-backup/2010-12-08_17-14-11 apply-incremental-backup
...many lines of output...
101208 17:15:12 mysqlbackup: mysqlbackup completed OK!

现在,完整备份目录中的数据文件是完全最新的,截至上次增量备份时。您可以使用更多增量备份不断更新它,以便随时可以恢复它。

二进制日志和中继日志恢复

当使用 copy-back-and-apply-logor apply-incremental-backup命令恢复增量备份时,二进制日志(以及中继日志,在副本服务器的情况下)如果包含在增量备份中,默认情况下也会恢复到目标服务器。--skip-binlog当 (1)选项(或 --skip-relaylog中继日志的选项)与 restore 命令一起使用,或 (2) 如果增量备份基于完整备份或任何先前的增量备份,此默认行为将被覆盖 在完整备份和此增量备份之间缺少二进制日志(或中继日志)(在这两种情况下, 对于 MySQL Enterprise Backup 8.0.19 及更高版本mysqlbackup重命名任何二进制日志(但不是中继日志)文件及其索引文件,这些文件已经通过将.old 扩展名添加到它们的文件名来恢复到服务器上)。

默认情况下,恢复增量备份后二进制日志(或中继日志)的位置与进行增量备份时日志在备份服务器上的位置相同,或者由 --log-bin(或 --relay-log)选项指定增量备份的恢复。

有关增量备份的更多详细信息,请参阅第 4.3.3 节“进行差异备份或增量备份”第 20.7 节“增量备份选项”