注册
关于备份恢复的相关心得
专栏/培训园地/ 文章详情 /

关于备份恢复的相关心得

易白 2024/04/24 545 0 0
摘要

一般备份恢复通常采用脱机还原的方式,在使用脱机还原时,可以根据需求,还原到指定时间点。
恢复数据库到指定时间点/LSN 是从归档恢复的一种方式,也称为不完全恢复。从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。用户可以通过指定一个时间点/LSN,使数据库恢复到这个指定的时间点/LSN。
例如,用户在下午 5 点做了一个误操作,删除了某些重要数据;我们可以指定恢复时 间点到下午 4:59 分,恢复被误删除的数据。
(1)准备数据;
CREATE TABLE TAB_FOR_RECOVER_01(C1 INT);
INSERT INTO TAB_FOR_RECOVER_01 VALUES(1);
COMMIT;
(2)备份数据库;
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_time_lsn';
(3)正确操作数据库,产生一些归档;
CREATE TABLE TAB_FOR_RECOVER_02(C1 INT);
INSERT INTO TAB_FOR_RECOVER_02 VALUES(1);
COMMIT;
使用 SELECT SYSDATE 命令查询此时的时间为:2018-11-16 10:56:40。
使用 SELECT FILE_LSN FROM V$RLOG 命令查询此时的 LSN 为:50857。
(4)误操作数据库。此步骤误删除了表 TAB_FOR_RECOVER_01 中数据。
DELETE FROM TAB_FOR_RECOVER_01;
COMMIT;
操作步骤同步骤 (3),此时的时间和 LSN 分别为:2018-11-16 10:57:20、50861。
(5)还原数据库。步骤 (4)为误操作,因此我们需要将数据库恢复到步骤(3)的状态。 首先需要关闭数据库实例,然后利用 DMRMAN 工具还原数据库。
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_time_lsn';
(6)恢复数据库到指定时间点/LSN。还原后数据库的数据与备份时一致,如果要恢复数据库至步骤 (3)的状态可以指定 UNTIL TIME 或 UNTIL LSN 参数重做部分归档。
使用 RECOVER DATABASE...UNTIL TIME 命令恢复到指定的时间:
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' UNTIL TIME'2018-11-16 10:56:40';
或者使用 RECOVER DATABASE...UNTIL TIME 命令恢复到指定的 LSN:
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'/home/dm_arch/arch' UNTIL LSN 50857;
如果在进行备份还原的时候遇到归档报错并提示repair;那么使用REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的所有本地归档日志目录执行修复。若目标库没有配置本地归档,则不执行修复。执行修复时,目标库一定不能处于运行状态。一般建议在数据库故障后,应立即执行归档修复,否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志丢失,届时再利用本地归档恢复将无法恢复到故障前的最新状态。
image.png
1、单机环境下,确保目标库已经停止工作后,执行归档修复;
2、DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;
对于两节点 DSC01、DSC02 执行修复如下:
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini';
3、DSC 环境下,REPAIR 操作也会利用其他节点的联机日志修复本地对应的远程归档。如果脱机修复之后,再进行备份时还会报“指定或者默认目录中找不到完整归档日志”、“收集到的归档日志和起始 LSN 不连续”或“归档日志不完整”等错误,可能是因为节点之前的远程归档就已经不完整,此时可以借助 dmrachk 工具手动拷贝远程节点的本地归档日志到本节点对应的远程归档目录中进行修复。
#注意,以上是dm8版本的,当涉及到旧版本时(dm7.1版本)
使用如下方式进行不完全恢复:
DMRESTORE INI_PATH=D:\dmdbms\data\DAMENG\dm.ini FILE=G:\123456\XXXX.bak ARCHIVE_DIR =G:\123456 time="2024-04-08 11:36:00"

最后,祝达梦产品越来越好,越来越强大!

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服