DM8物理备份及还原

DM8物理备份及还原
一、概念
物理备份:
是直接扫描数据库文件,找出那些已经分配、使用的数据页,拷贝并保存到备
份集中。物理备份过程中,不关心数据页的具体内容是什么,也不关心数据页属于哪一张表,
只是简单的根据数据库文件系统的描述,来挑选有效的数据页。
物理还原:
物理还原一般通过 DMRMAN 工具(或者 SQL 语句),把备份集中的数据内容(数据文件、数据页、归档文件)重新拷贝、写入目标文件。

联机备份还原:联机备份还原指数据库处于运行状态时,并正常提供数据库服务情况下进行的备份还原操作,称为联机备份还原。
脱机备份还原:脱机还原指数据库处于关闭状态时执行的还原操作。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。
备份集:备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对应了一次完整的备份。一般情况下,一个备份集就是一个目录,备份集包含一个或多个备份片文件,以及一个备份元数据文件。

二、备份恢复实战
2.1环境准备
安装实例(略)
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。

脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档。

2.2归档配置
一是联机归档配置,数据库实例启动情况下,使用 SQL 语句完成 dmarch.ini 和 ARCH_INI 配置;
二是手动配置归档,数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明这两种归档如何配置。
方式一:联机配置归档
ALTER DATABASE MOUNT;
##配置本地归档
ALTER DATABASE ADD ARCHIVELOG ‘DEST = /home/dm_arch/arch, TYPE = local,FILE_SIZE = 1024, SPACE_LIMIT = 2048’;
##开启归档模式
ALTER DATABASE ARCHIVELOG;
##修改数据库为 Open 状态
ALTER DATABASE OPEN;
在这里插入图片描述

方式二:
手动配置归档
##关闭数据库
##在 dm.ini 所在目录,创建 dmarch.ini 文件。dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /home/dm_arch/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
在这里插入图片描述

##编辑 dm.ini 文件,设置参数ARCH_INI=1
##启动数据库实例,数据库已运行于归档模式。
在这里插入图片描述

注意
联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。存在该类操作时,若要避免该错误,备份前需要调用【 checkpoint(100) ;】命令主动刷新检查点。

2.3联机备份还原
联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
2.4全库 + 增量备份集还原数据库
2.4.1准备工作
create table test (a int );
insert into test values (1);
commit;
在这里插入图片描述

2.4.1.1第一次全库备份
backup database full to “bak_001” backupset ‘/home/bak/bak_001’ compressed level 1;
在这里插入图片描述

2.4.1.2第二次备份为增量备份
##插入数据2
insert into test values(2);
commit;
backup database increment to “bak_002” backupset ‘/home/bak/bak_002’ compressed level 1;
在这里插入图片描述

2.4.1.3第三次备份为增量备份
##插入数据3
insert into test values(3);
commit;
backup database increment to “bak_003” backupset ‘/home/bak/bak_003’ compressed level 1;
在这里插入图片描述

补充:累积增量备份
指定关键字cumulative可以进行累积增量备份,使用如下命令进行累积增量备份:
backup database increment cumulative with backupdir ‘/home/backup’ backupset ‘/home/backup/fullbak_2024_3’;
在这里插入图片描述

删除表
在这里插入图片描述

关闭数据库实例(略)
使用全备恢复(略)
使用累积增量备份恢复:
restore database ‘/home/dataffff/PROFFFF/dm.ini’ from backupset ‘/home/backup/fullbak_2024_3’ with backupdir ‘/home/backup’;
recover database ‘/home/dataffff/PROFFFF/dm.ini’ from backupset ‘/home/backup/fullbak_2024_3’;
recover database ‘/home/dataffff/PROFFFF/dm.ini’ update db_magic;
在这里插入图片描述

验证数据:
在这里插入图片描述

2.4.1.4查看备份集

在这里插入图片描述

注意
如果两个增量备份期间未产生新数据,则无法进行增量备份。

2.4.1.5查询表数据
在这里插入图片描述

2.4.1.5删除表数据
在这里插入图片描述

2.4.2具体步骤
2.4.2.1停止数据库服务
在这里插入图片描述

注意:后面使用脚本的方式停服务,不要采用kill的方式。
2.4.2.2检验备份集是否正确
RMAN> CHECK BACKUPSET ‘/home/bak/bak_001’;
CHECK BACKUPSET ‘/home/bak/bak_001’;

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.
time used: 155.457(ms)
RMAN> RMAN> CHECK BACKUPSET ‘/home/bak/bak_002’;
CHECK BACKUPSET ‘/home/bak/bak_002’;

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.
time used: 142.370(ms)
RMAN> RMAN> CHECK BACKUPSET ‘/home/bak/bak_003’;
CHECK BACKUPSET ‘/home/bak/bak_003’;

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.
time used: 134.468(ms)
在这里插入图片描述

2.4.2.3还原、恢复、更新魔数
RESTORE DATABASE ‘/home/dataddd/PRODDDD/dm.ini’ FROM BACKUPSET ‘/home/bak/bak_001’;
RECOVER DATABASE ‘/home/dataddd/PRODDDD/dm.ini’ FROM BACKUPSET ‘/home/bak/bak_001’;
RECOVER DATABASE ‘/home/dataddd/PRODDDD/dm.ini’ UPDATE DB_MAGIC;
使用第一次备份并查看还原后的结果:
在这里插入图片描述

使用第二次备份并查看还原后的结果:
在这里插入图片描述

同理,使用第三次备份并查看还原后的结果:

在这里插入图片描述

2.5表空间级备份与还原
使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集 。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为 OFFLINE 状态。表 空 间 还 原 后 , 表 空 间 状 态 被 置 为 RES_OFFLINE , 并 设 置 数 据 标 记FIL_TS_RECV_STATE_RESTORED,表示已经还原但数据不完整。
语法如下:
RESTORE DATABASE ‘<ini_path>’ TABLESPACE <表空间名> [WITH CHECK]
[DATAFILE <文件编号> {,<文件编号>} | ‘<文件路径>’ {,‘<文件路径>’}]
FROM BACKUPSET ‘<备份集路径>’ [<device_type_stmt>]
[IDENTIFIED BY <密码>|“<密码>”] [ENCRYPT WITH <加密算法>]
[WITH BACKUPDIR ‘<基备份搜索目录>’ {,‘<基备份搜索目录>’}]
[MAPPED FILE ‘<映射文件路径>’]
[TASK THREAD <线程数>];
<device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS ‘<介质参数>’]
DATABASE:指定还原目标库的 dm.ini 文件路径。
TABLESPACE:指定还原的表空间,TEMP 表空间除外。
WITH CHECK :指定还原前校验备份集数据完整性。缺省不校验。
DATAFILE:还原指定的数据文件。可以指定数据文件编号或数据文件路径。文件编号,
对应动态视图 V D A T A F I L E 中 I D 列的值;文件路径,对应动态视图 V DATAFILE 中 ID 列的值;文件路径,对应动态视图 V DATAFILEID列的值;文件路径,对应动态视图VDATAFILE 中 PATH
或者 MIRROR_PATH 列的值,也可以仅指定数据文件名称(相对路径),与表空间中数据文
件匹配时,会使用 SYSTEM 目录补齐。
BACKUPSET:指定还原备份集的路径。若指定为相对路径,会在默认备份目录下搜索
备份集。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,
PARMS:介质参数,只对介质类型为 TAPE 时有效
IDENTIFIED BY:加密备份表空间时,用户设置的密码。密码长度为 9 到 48 个字节。
ENCRYPT WITH:加密算法。缺省情况下,算法为 AES256_CFB。具体包含哪些加密
算法请参考 3.2.2.1.1 概述。
WITH BACKUPDIR:用于增量备份的还原中,指定基备份的搜索目录。
MAPPED FILE :指定存放还原目标路径的文件
TASK THREAD:还原过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若
指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为当前系统主机核数。

注意事项:
使用说明:

  1. 表空间还原不能是 TEMP 表空间,指定文件还原也不能为 TEMP 表空间中文件。
  2. 表空间还原要求还原目标库与备份库为同一个库。
  3. 还原目标库不能为已经执行过 RESTORE 但未执行过 RECOVER 的库。
  4. 处于RES_OFFLINE或CORRUPT状态的表空间不允许指定表空间中数据文件还原。
  5. 整个还原过程中不会修改数据库本身状态或者调整 CKPT_LSN。
  6. 不管是 DSC 环境,还是单机环境,若异常退出,需手动指定各节点归档修复后,
    使用各节点完整的归档日志执行还原恢复;否则,将可能无法恢复到最新状态。
  7. 若目标库中 SYSTEM 表空间故障,则必须优先还原 SYSTEM 表空间。
  8. 在 DMDSC 环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任
    一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空
    间还原即可。
  9. 如果 SYSTEM 表空间处于 ONLINE/OFFLINE 状态且文件丢失,则必须要通过库还原
    修复,不支持对其执行表空间还原。
    2.5.1创建表空间
    create tablespace “TS1” datafile ‘/home/dataffff/PROFFFF/TS1.dbf’ size 128;
    在这里插入图片描述

2.5.2创建表,并指定表的存储空间为TS1
create table test(c1 int) storage(on “TS1”);
insert into test values(1);
commit;
在这里插入图片描述

2.5.3备份表空间
backup tablespace “TS1” full to “ts_bak_01” backupset ‘/home/tb_space’ device type disk;

在这里插入图片描述

2.5.4删除TS1表空间数据文件
在这里插入图片描述

2.5.5执行表空间还原
RESTORE DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ TABLESPACE TS1 FROM BACKUPSET ‘/home/tb_space’;
在这里插入图片描述

2.5.6恢复数据库
RECOVER DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ TABLESPACE TS1;
在这里插入图片描述

2.5.7启动数据库
/home/dmdba/dmdbms/bin/dmserver path=/home/dataffff/PROFFFF/dm.ini
在这里插入图片描述

2.5.8查询test表

在这里插入图片描述

2.6表空间指定映射文件还原
2.6.1备份MAIN表空间
BACKUP TABLESPACE MAIN BACKUPSET ‘/home/bak/ts_bak_for_map’;
在这里插入图片描述

2.6.2创建映射文件
DUMP BACKUPSET ‘/home/bak/ts_bak_for_map’ MAPPED FILE ‘/home/dm_mappedfile/map_file.txt’;
在这里插入图片描述

映射文件的内容如下:
在这里插入图片描述

2.6.3还原 MAIN 表空间
关闭数据库
开始还原
RESTORE DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ TABLESPACE MAIN FROM BACKUPSET’/home/bak/ts_bak_for_map’ MAPPED FILE ‘/home/dm_mappedfile/map_file.txt’;
在这里插入图片描述

2.7归档备份及还原
使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可
以是脱机归档备份集,也可以是联机归档备份集。
语法如下:
RESTORE <ARCHIVE LOG | ARCHIVELOG> [WITH CHECK] FROM BACKUPSET ‘<备份集路径>’
[<device_type_stmt>]
[IDENTIFIED BY <密码>|“<密码>” [ENCRYPT WITH <加密算法>]]
[TASK THREAD <任务线程数>]
[ALL | [FROM LSN ] | [UNTIL LSN ] | [LSN BETWEEN < lsn> AND < lsn>] | [FROM TIME

在这里插入图片描述在这里插入图片描述

2.7.2设置归档备份定时作业(图形化)
在这里插入图片描述
在这里插入图片描述

2.7.3删除归档
在这里插入图片描述

2.7.4恢复归档
RESTORE ARCHIVE LOG FROM BACKUPSET ‘/home/archbak/ARCH_LOG_PROFFFF_2024_02_26_17_15_06’ TO ARCHIVEDIR ‘/home/arch’ OVERWRITE 3;在这里插入图片描述

2.7.5检查归档日志
在这里插入图片描述

2.8恢复到指定时间点
恢复数据库到指定时间点/LSN是从归档恢复的一种方式,也称为不完全恢复
通过:
RECOVER DATABASE…UNTIL TIME命令恢复到指定的时间
2.8.1创建表,插入数据
create table test(id int);
insert into test values(1);
commit;
在这里插入图片描述

2.8.2进行联机完全备份
backup database full to “db_full” backupset ‘/home/data/db_full’;
在这里插入图片描述

2.8.3准备数据
插入数据,并查询当前时间
insert into test values(2);
commit;
select * from test;
SELECT SYSDATE;–查询当前时间
SELECT FILE_LSN FROM V$RLOG;–查询此时的LSN
在这里插入图片描述

记录当前时间t2:2024-02-26 11:29:07
LSN:45186

2.8.3再插入数据
在这里插入图片描述

记录当前时间t2:2024-02-26 11:33:46LSN:45191

2.8.4dmrman工具还原数据
RESTORE DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ FROM BACKUPSET ‘/home/data/db_full’;
在这里插入图片描述

2.8.5数据恢复
恢复到t1-t2时间点
RECOVER DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ WITH ARCHIVEDIR ‘/home/arch’ UNTIL TIME ‘2024-02-26 11:31:46’;
RECOVER DATABASE ‘/home/dataffff/PROFFFF/dm.ini’ UPDATE DB_MAGIC;
在这里插入图片描述

2.8.6验证

在这里插入图片描述

2.9表级备份恢复
执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表
还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档
日志进行恢复。
2.9.1准备数据
CREATE TABLE test_table (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
INSERT INTO test_table (id, name, age) VALUES (1, ‘Alice’, 25);
INSERT INTO test_table (id, name, age) VALUES (2, ‘Bob’, 30);
在这里插入图片描述

2.9.2备份表
备份表不需要服务器配置归档
#备份集“tab_bak_01”会生成到默认的备份路径下
BACKUP TABLE test_table BACKUPSET ‘/home/tab_bak_02’;
在这里插入图片描述

2.9.3校验备份
此步骤为可选
SELECT SF_BAKSET_CHECK(‘DISK’,‘/home/tab_bak_02’);
在这里插入图片描述

2.9.4删除数据
在这里插入图片描述

2.9.4执行表结构还原
表备份和目标表中都包含索引,如果直接执行表数据还原会报错:
还原表中存在二级索引或冗余约束;
RESTORE TABLE test_table STRUCT FROM BACKUPSET’/home/tab_bak_02’;
2.9.5执行表数据还原
RESTORE TABLE test_table FROM BACKUPSET ‘/home/tab_bak_02’;
在这里插入图片描述

2.9.6还原到新表
CREATE TABLE new_table LIKE test_table;
RESTORE TABLE new_table FROM BACKUPSET ‘/home/tab_bak_02’;

在这里插入图片描述

有任何疑问请访问达梦官方网站:https://eco.dameng.com

  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值