使用备份进行恢复

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年7月20日 (四) 05:55的版本 (创建页面,内容为“现在,假设我们在星期三上午8点发生了一次灾难性的意外退出,需要从备份中恢复。为了恢复,首先我们恢复我们拥有的最后一个完整备份(即星期日下午1点的备份)。完整备份文件只是一组SQL语句,因此恢复它非常简单: $> mysql < backup_sunday_1_PM.sql 此时,数据已经恢复到星期日下午1点的状态。要恢复自那时以来所做的更改,我们必须使用增量备…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

现在,假设我们在星期三上午8点发生了一次灾难性的意外退出,需要从备份中恢复。为了恢复,首先我们恢复我们拥有的最后一个完整备份(即星期日下午1点的备份)。完整备份文件只是一组SQL语句,因此恢复它非常简单:

$> mysql < backup_sunday_1_PM.sql


此时,数据已经恢复到星期日下午1点的状态。要恢复自那时以来所做的更改,我们必须使用增量备份,即gbichot2-bin.000007和gbichot2-bin.000008二进制日志文件。如果需要,从备份处获取文件,然后像这样处理它们的内容:

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


现在,我们已经将数据恢复到了星期二下午1点的状态,但仍然缺少从那天到崩溃日期的更改。为了不丢失这些更改,我们需要将MySQL服务器将其MySQL二进制日志存储到与存储数据文件的位置(RAID磁盘、SAN等)不同的安全位置,以便这些日志不在被损坏的磁盘上。(也就是说,我们可以通过在启动服务器时使用--log-bin选项,指定一个与数据目录所在的物理设备不同的位置。这样,即使包含目录的设备丢失,日志也是安全的。)如果我们这样做了,我们就会有gbichot2-bin.000009文件(以及任何后续文件),我们可以使用mysqlbinlog和mysql来应用它们,恢复最近的数据更改,而不会丢失崩溃时刻之前的任何数据更改:

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