暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【干货攻略】使用不同DB_MAGIC归档恢复达梦数据库

达梦E学 2022-02-10
1695

-----正文-----


本章介绍DM8数据库在多次故障后,如果没有最新的备份,如何使用以前的备份文件以不同的归档恢复数据库到最新状态。


环境说明

操作系统:CentOS7

数据库版本:DM8

相关关键字:达梦数据库、归档日志、备份还原

 

一、背景

事件流程如下:

  1.  创建一个数据库D1;

  2. 操作数据库并执行数据库备份B1;

  3. 继续操作数据库的过程中数据库故障,此时生成的归档为A1;

  4. 利用备份B1和归档A1将数据库D1恢复到目标库D2,此时数据库D2为D1故障前的状态;

  5. 启动数据库D2,操作数据库过程中数据库第二次故障,此时生成的归档为A2。

归档A1、A2属于不同的数据库,使用备份B1和归档A1、A2是否可以恢复数据库到第二次故障发生前的状态呢?


二、操作步骤

1、查看D1状态

select name,status$,mode$ from v$instance;
select arch_mode from v$database;
select name from v$archived_log;

2、操作数据库的同时备份数据库,备份集为B1。此处以向表中循环插入数据为例来操作数据库

CREATE TABLE TAB_FOR_RECOVER(C1 INT);
BEGIN
FOR I IN 1..100000 LOOP
INSERT INTO TAB_FOR_RECOVER VALUES(I);
COMMIT;
END LOOP;
END;
/

在插入数据的同时,另一个会话备份数据库

BACKUP DATABASE FULL TO B1 BACKUPSET '/u01/dmdbms/data/DAMENG/bak/DB_FULL_BAK_FOR_RECOVER' DEVICE TYPE DISK;

3、继续插入一段时间数据后关闭数据库实例,备份完成后到关闭数据库期间产生的归档为A1



4、初始化库D2,即待还原的库

dminit path=/u01/dmdbmsbak/data db_name=DAMENG_FOR_RES

5、使用DMRMAN利用备份集B1以及归档A1还原至D1故障前状态

RESTORE DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' FROM BACKUPSET '/u01/dmdbms/data/DAMENG/bak/DB_FULL_BAK_FOR_RECOVER';
RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR '/u01/dmdbms/data/DAMENG/arch';
RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' UPDATE DB_MAGIC;

6、启动D2,开启归档并配置相同归档路径,继续插入数据

dmserver /u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini


alter database mount;
alter database archivelog;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/u01/dmdbms/data/DAMENG/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
alter database open;
select name,status$,mode$ from v$instance;
select arch_mode from v$database;
select name from v$archived_log;

BEGIN
FOR I IN 1..100000 LOOP
INSERT INTO TAB_FOR_RECOVER VALUES(I);
COMMIT;
END LOOP;
END;
/


7、插入一段时间后,关闭数据库,模拟第二次故障,从启动到关闭期间产生的归档为A2



8D2恢复至第一次故障前状态,然后利用A2将库恢复到最新状态

首先查看当前数据库的DB_MAGIC 

然后将数据库恢复至第一次故障前状态

恢复后的DB_MAGIC为

然后恢复A2归档,但是因为DB_MAGIC值不同,所以恢复时需指定DB_MAGIC

RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR '/u01/dmdbms/data/DAMENG/arch' USE DB_MAGIC 1410316548;
RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' UPDATE DB_MAGIC;

>>> THE END <<<

好,以上是本期干货分享内容,希望能给大家带来帮助。关注本微信公众号,获取更多技术干货!



 
 


相关推荐

干货 | 达梦数据库LINUX下误删数据文件如何进行数据恢复

干货 | DM8非确认监视器集群管理

总结丨综合放送,盘点2021年40篇干货攻略
动态 | 达梦DCA(2022-2月班)开始报名!

内容丨魏煜
审核丨青城
编辑丨Hh

文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论