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

达梦数据库表空间还原和恢复

原创 手机用户5278 2022-06-17
3538

表空间还原和恢复

主备环境下指定 DB_MAGIC 收集归档

DM 不仅支持从数据库备份和表空间备份中还原表空间,还支持还原表空间中特定的数据文件。若表空间已经被破坏,则不允许执行特定数据文件的还原。使用数据库备份还原表空间或表空间中的数据文件与使用表空间备份操作类似,区别在于 RESTORE 语句中指定的备份集为数据库备份集。

主备环境下,如果当前节点的归档缺失,使用归档进行恢复时,会由于归档日志不连续而报错,无法将表空间恢复到最新状态。如果另一节点保存有该部分日志,则可以使用该节点日志进行恢复。默认情况下,恢复阶段收集归档时只收集与待恢复库 DB_MAGIC、PERMANENT_MAGIC 一致的归档文件,而在主备环境中 PERMANNET_MAGIC 是一致的,此时可通过指定 DB_MAGIC 跳过这一限制。

搭建实时备份集群测试环境

查看主备数据库魔数情况

1) 搭建主备环境并登录任意节点进行备份;--一般情况下都是登录主库备份

--分别修改主备库的dm.ini参数 修改默认备份地址/dm/dmback,设置归档路径/dm/dmarch/dmedudb

--备份数据库

disql sysdba/dameng123:15236

--创建测试用户和表空间

CREATE tablespace TEST datafile '/dm/dmdata/dmedudb/test01.dbf' size 128 autoextend ON NEXT 4 maxsize 10240,'/dm/dmdata/dmedudb/test02.dbf' size 128 autoextend ON NEXT 4 maxsize 10240;

CREATE TABLE test_student (

id bigint identity,

name varchar(20),

birthday date,

math int,

english int,

science int

)STORAGE ( ON TEST );

SQL>BACKUP TABLESPACE test BACKUPSET '/dm/dmback/ts_bak_for_arch';

  1. 登录主节点插入部分数据后退出,然后删除该节点下所有归档日志;

--插入测试数据

disql sysdba/dameng123:15236

insert into test_student

select

dbms_random.string('1',trunc(dbms_random.value(3,8))),

current_date()-365*20+dbms_random.value(-365,365),

trunc(dbms_random.value(40,100)),

trunc(dbms_random.value(40,100)),

trunc(dbms_random.value(40,100))

from dual

connect by level <=100000;

commit;

shutdown immediate; --关闭数据库

cd /dm/dmarch/dmedudb

rm -rf * --删除主库上所有的归档

3) 从备份集还原表空间 test 到主节点;

su - dmdba

su - dmdba

cd /dm/dmdbms/dm8/bin

./dmrman

ps -ef|grep dmdba

Kill 掉dmwatcher和dmserver进程

RMAN>RESTORE DATABASE '/dm/dmdata/dmedudb/dm.ini' TABLESPACE test FROM BACKUPSET '/dm/dmback/ts_bak_for_arch';

dmtest02

su - dmdba

cd /dm/dmarch/dmedudb

scp * 172.16.10.81:/dm/dmarch/dmedudb --将备机的归档文件拷贝到主服务器机器

  1. 指定 DB_MAGIC,使用备库归档进行恢复。由于主节点下所有归档已被删除,无法恢复到最新状态,此时需要借助备库存在的归档进行恢复。

RMAN>RECOVER DATABASE '/dm/dmdata/dmedudb/dm.ini' TABLESPACE test WITH ARCHIVEDIR '/home/dm_arch2' USE DB_MAGIC 1467368850;

此时启动主机数据库服务看是否能启动,启动成功

由于监视器进程的原因原主机已经被切换为了备机。这个时候我们来将dmtest02机器直接关机(测试环境,生产不推荐使用这种方式关机)。后再查看数据库的情况。

查看表内数据情况,可见test表空间恢复成功。

总结:

联想一下这个案例的适用场景。如果主备库都损坏了。我们要想尽一切办法去追平数据。因此在备份是联机热备。我们要想追平表内的数据,只有去利用归档。而主节点的归档全部丢失,可以认为是主节点完全的损坏,而备节点暂时接管了全部业务,未了尽快的恢复集群,我们就需要用到备节点中的归档来取追平数据,再将主节点切换上线,以避免单节点故障突然发生。

实际上还可以为实时集群再配置一个异步备机放到其他地区的机房,也就是单城两机房。这样可以加强对数据的保护。

点不点看你哦:https://eco.dameng.com/

最后修改时间:2022-06-17 09:42:04
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论