在不同的场景下,使用增量备份来恢复数据库有不同的方式。首选方法是首先恢复完整备份,并使用命令将其更新到执行完整备份时的时间
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-log
or
apply-incremental-backup
命令恢复增量备份时,二进制日志(以及中继日志,在副本服务器的情况下)如果包含在增量备份中,默认情况下也会恢复到目标服务器。--skip-binlog
当 (1)选项(或
--skip-relaylog
中继日志的选项)与 restore 命令一起使用,或 (2) 如果增量备份基于完整备份或任何先前的增量备份,此默认行为将被覆盖
在完整备份和此增量备份之间缺少二进制日志(或中继日志)。
有关增量备份的更多详细信息,请参阅第 4.3.2 节“进行差异备份或增量备份”和 第 14.7 节“增量备份选项”。