Documentation Home

5.2.3 恢复增量备份

在不同的场景下,使用增量备份来恢复数据库有不同的方式。首选方法是首先恢复完整备份,并使用命令将其更新到执行完整备份时的时间 copy-back-and-apply-log(请参阅 示例 5.5 “使用复制返回和应用恢复备份目录 - log或 例 5.6,“使用copy-back-and-apply-log恢复单文件备份 ”了解如何做);然后 copy-back-and-apply-log再次使用在刚刚恢复的完整备份之上恢复增量备份映像:

示例 5.9 恢复增量备份映像

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选项用于指定保存临时输出、状态文件和备份元数据的临时目录。对您拥有的其他增量备份映像重复该步骤,直到数据已恢复到所需的时间点。

或者,您可以将完整备份与增量备份一起更新。首先,将备份运行时发生的任何更改应用于完整备份:

$ 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!

然后,我们应用增量备份中的更改:

$ 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) 如果增量备份基于完整备份或任何先前的增量备份,此默认行为将被覆盖 在完整备份和此增量备份之间缺少二进制日志(或中继日志)。

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