7.3.2 使用备份进行恢复

现在,假设我们在星期三上午 8 点发生了灾难性的崩溃,需要从备份中恢复。要恢复,首先我们要恢复上一次的完整备份(从周日下午 1 点开始的完整备份)。完整的备份文件只是一组 SQL 语句,因此还原它非常容易:

shell> mysql < backup_sunday_1_PM.sql

此时,数据将恢复到周日下午 1 点的状态。要恢复此后所做的更改,我们必须使用增量备份;即gbichot2-bin.000007gbichot2-bin.000008二进制日志文件。如有必要,从备份位置获取文件,然后按以下方式处理其内容:

shell> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql

现在,我们已将数据恢复到星期二下午 1 点的状态,但是仍然缺少从该日期到崩溃日期的更改。为了不丢失它们,我们需要让 MySQL 服务器将其 MySQL 二进制日志存储在与其存储数据文件的位置不同的安全位置(RAID 磁盘,SAN 等)中,以便这些日志不会在损坏的磁盘上。 (也就是说,我们可以使用--log-bin选项启动服务器,该选项指定与数据目录所在的物理设备不在同一物理设备上的位置。这样,即使丢失了包含该目录的设备,日志也很安全。)如果执行了此操作,我们将拥有gbichot2-bin.000009文件(以及所有后续文件),并且可以使用mysqlbinlogmysql来应用它们以恢复最新的数据更改,而不会发生崩溃之前的丢失:

shell> mysqlbinlog gbichot2-bin.000009 ... | mysql

有关使用mysqlbinlog处理二进制日志文件的更多信息,请参见第 7.5 节“时间点(增量)恢复”