数据库备份是 DBA 日常最重要的工作内容。备份的主要目的是数据容灾,保证数据的安全性,在数据库发生故障时,通过还原备份集,将数据恢复到可用状态。
如果能将数据库恢复到指定节点,可以有效的避免人多人工重复的操作,提高效率,提高高可用性。
1 原理
恢复数据库到指定时间点/LSN 是从归档恢复的一种方式,也称为不完全恢复。从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。用户可以通过指定一个时间点/LSN,使数据库恢复到这个指定的时间点/LSN。
2 条件
- 数据库备份集
- 数据库的归档日志
3 实操
场景:例如,用户在下午3点半左右做了一个误操作,删除了某些重要数据;我们可以指定恢复时间点到下午1点左右,恢复被误删除的数据。
1:准备数据
2:数据库备份
3:正确操作数据库,产生一些归档;
4:确定当前时间:
5:查询此时的LSN
6:误操作数据: 通常的误操作为删除表数据
7:确定误操作的时间以及LSN
8:还原数据库
步骤6为误操作,所以我们需要还原到步骤3的状态
- 使用dmrman还原恢复数据,需要关闭数据库服务
- 还原数据库数据
`RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/backup/db_full_bak_for_time_lsn'`
- 恢复数据库到指定时间点/LSN
恢复到指定的时间点:
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' WITH ARCHIVEDIR
> '/dm8/arch' UNTIL TIME '2022-09-29 13:58:51';
恢复到指定LSN
RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' WITH ARCHIVEDIR '/dm8/arch' UNTIL LSN 89950;
9:更新db_magic
recover database'/dm8/data/DAMENG/dm.ini' update db_magic;
10:启动还原后的数据库,验证数据
可以看到,步骤6误删除的数据,验证恢复数据库到被删除数据之前,