数据库如何恢复到指定时间点

【问题描述】

数据库如何恢复到指定时间点?

【问题原因】

该操作没有特定触发原因,通常是用户进行了误操作数据或者数据表后,希望借助备份和归档将数据库恢复到误操作之前的某一时间点。

【问题解决】

当用户进行误操作数据或者数据表后,可以利用先前存在的备份将数据库恢复到误操作前,确保数据库能正常运行。要点如下:

  1. 确保数据库已开启归档,且有完整的备份策略;
  2. 对数据库进行误操作后,要记录下误操作的时间,并找到最新的备份文件;
  3. 如果不针对数据库进行时间点还原,则只会恢复数据库到备份前的状态;
  4. 恢复数据库到指定时间点,一定要保证归档的连续性,否则会失败;
  5. 对数据库进行时间点还原,一定要在自己记录下的时间往前推一点时间。

恢复步骤如下:关闭数据库,使用 dmrman 工具备份还原,恢复数据库。恢复数据库到指定时间点需要借助归档文件,指定时间点要往前推(例如:误操作时间为 2021-12-07 00:02:44 左右,这里考虑往前推 30 秒)。

还原:RESTORE DATABASE '/dmdata/DAMENG/dm.ini' from backupset '/dmdata/dmbak/BAK_FULL_20211206BAK';
恢复:RECOVER DATABASE '/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch' UNTIL TIME ' 2021-12-07 00:02:10';
更新:RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC;