达梦数据库-物理备份与还原-(DISQL联机全备+增量备份+归档进行不完全恢复或完全恢复-实践示例)-记录总结

物理备份还原恢复和逻辑备份还原。

逻辑备份还原--dexp和dimp命令行工具和MANAGER图形化工具。

物理备份还原与恢复

--操作系统级别物理文件方式拷贝与还原。

--disql工具(对应图形化工具MANAGER):执行联机数据备份与还原,包括联机的数据库备份、归档备份、表空间备份与还原、表备份与还原。

--DMRMAN工具(对应图形化工具CONSOLE ):执行脱机数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复。

1DISQL联机全备+增量备份+归档进行不完全恢复或完全恢复-实践示例

对达梦数据库模拟生产环境进行在线联机备份,然后拷贝到异机测试环境使用备份和归档对数据库进行还原恢复是日常中常见的需求操作。

环境说明

准备主机1(IP 192.168.118.236)与主机2(IP 192.168.118.237),都安装相同版本达梦数据库软件。

主机1上初始化达梦数据库实例、配置归档。

1.1主机1数据库构造数据与备份

--(1)创建目录

root@192 dmsoft# mkdir /datas

root@192 dmsoft# chown -R dmdba:dinstall /datas

--(2)创建表空间使用非默认实例路径

create tablespace test1 datafile '/datas/TEST1.DBF' size 128 autoextend on next 2 maxsize 10240 CACHE = NORMAL;

--(3)创建用户

create user TEST1 identified by "HUN_admin2026"

default tablespace test1

default index tablespace test1;

--(4)创建用户

CREATE TABLE test1.test1( c1 INT,sjtime DATETIME, c3 CHAR(100));

insert into test1.test1 values(1,now(),'1');

commit;

select * from test1.test1;

--(5)disql登录全备数据库

BACKUP DATABASE FULL BACKUPSET '/data/dmbak/dmdb_ bak full0 1 ';

--(6)继续构造数据

insert into test1.test1 values(2,now(),'INCREMENT2');

commit;

select * from test1.test1;

--( 7 )disql登录 数据库联机进行 增量备份

BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/data/dmbak/dmdb_ bak full0 1 ' BACKUPSET '/data/dmbak/dmdb_ bak increment0 1 ';

--(8)继续构造数据

insert into test1.test1 values(3,now(),'INCREMENT3');

commit;

select * from test1.test1;

--(9)disql登录数据库继续进行联机增量备份

BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/data/dmbak/dmdb_ bak full0 1 ' BACKUPSET '/data/dmbak/dmdb_ bak increment0 2 ';

--(10)继续构造数据

insert into test1.test1 values(4,now(),'INCREMENT4');

commit;

insert into test1.test1 values(5,now(),'INCREMENT5');

commit;

insert into test1.test1 values(6,now(),'INCREMENT6');

commit;

select * from test1.test1;

select STATUS,PATH,ARCH_LSN,CLSN from V$ARCH_FILE;

#ARCH_LSN 归档文件起始 LSN、CLSN 已归档的最大 LSN

SELECT FILE_LSN,FLUSH_LSN,CUR_LSN FROM V$RLOG;

#FILE_LSN 已经到盘上的 LSN、FLUSH_LSN 当前准备刷盘的 LSN、CUR_LSN 当前的 LSN

1.2主机2进行还原和恢复

1.2.1准备工作

--主机2(192.168.23.237)数据库环境准备,初始化实例,启动完全后关闭

dmdba@192 bin$ dminit path=/data/dmdata page_size=32 extent_size=32 port_num=5237 CASE_SENSITIVE=0 charset=1 log_size=1024 SYSDBA_PWD=HUN_admin2026 SYSAUDITOR_PWD=HUN_admin2026

dmdba@192 bin$ dmserver /data/dmdata/DAMENG/dm.ini

--拷贝全备份和增量备份到主机2目录/data/dmbak/DAMENG/

root@192 dmbak# scp -r dmdb_bakfull01 dmdb_bakincrement01 dmdb_bakincrement02 dmdba@192.168.118.237:/data/dmbak/DAMENG/

--原库查询表空间相关信息或者目标端show backupset备份信息

--数据库表空间目录

--目标端show backupset备份信息

show backupset '/data/dmbak/DAMENG/dmdb_bakfull01';

1.2.2只还原恢复全备份

--(1)提前创建目录并授权

root@192 dmsoft# mkdir /datas

root@192 dmsoft# chown -R dmdba:dinstall /datas

否则直接还原时报错,可以提前创建与源端相同目录或者还原时使用映射文件mappedfile。

--(2)全备还原

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01';

如果指定REUSE DMINI参数,可 恢复 dm.ini中除路径相关的INI参数。

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' REUSE DMINI FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01';

--(3)全备恢复

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01';

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' update db_magic;

--(4)启动数据库,登录查询,查询结果为全备份时数据

1.2.3只还原恢复全备份--使用映射文件改变文件路径

--(1)主机2上dmrman中根据全备份生成映射文件

DUMP BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01' MAPPED FILE '/data/dmbak/DAMENG/map_file_01.txt'

--(2)修改映射文件

--(3)全备还原时指定

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01' MAPPED FILE '/data/dmbak/DAMENG/map_file_01.txt';

--(4)全备恢复

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakfull01';

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' update db_magic;

--(5)启动数据库,登录后查询到表空间test1的数据文件路径已改变。

1.2.4只还原恢复到某个增量备份

--(1)某个增量备份还原,自动会还原基全备份

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakincrement01';

--(2)增量备份的恢复

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakincrement01';

--(3)更新db_magic

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' update db_magic;

--(4)启动数据库,登录查询结果为备份dmdb_bakincrement01时数据

1.2.4全备份+增量备份+归档进行完全恢复

--(1)查看最后1个增量备份信息,拷贝需要的归档日志

CHECK BACKUPSET '/data/dmbak/DAMENG/dmdb_bakincrement02';

show backupset '/data/dmbak/DAMENG/dmdb_bakincrement02';

root@192 dmbak# scp -r /data/dmarch/DAMENG/ARCHIVE_LOCAL1_0x75F29E38_EP0_2026-05-12_19-59-57.log dmdba@192.168.118.237:/data/dmbak/DAMENG/

--(2)最后1个增量备份还原,自动会还原基全备份

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakincrement02';

--(3)恢复归档,不指定恢复到某个时间点或者LSN,应用归档中所有

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmbak/DAMENG/';

--(3)update db_magic

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' update db_magic;

--(4)启动数据库后查询

dmdba@192 bin$ ./dmserver /data/dmdata/DAMENG/dm.ini

select * from test1.test1;

SELECT N_EP, APPLY_LSN_ARR FROM V$RAPPLY_LSN_INFO;

--(5)对比原库日志文件中最新写LSN

SELECT CKPT_LSN,FILE_LSN from V$rlog;--53053

--查原库归档日志中相关信息

select * from V$ARCHIVED_LOG ;

​​​​​​​1.2.4全备份+增量备份+归档进行不完全恢复

--(1)最后1个增量备份还原,自动会还原基全备份

RMAN>RESTORE DATABASE '/data/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/data/dmbak/DAMENG/dmdb_bakincrement02';

--(2)恢复归档到某个时间点或者LSN

--查询原库数据信息

--UNTIL LSN xxx

--示例需求为恢复到UNTIL TIME '2026-05-16 21:24:12' c1为5的数据,假如不清楚想要的数据具体时间时,可以逐步恢复推进

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmbak/DAMENG/' UNTIL TIME '2026-05-16 21:24:10';

--(3)不更新update db_magic,dmserver启动时配置recover_check=0后查询

./dmserver /data/dmdata/DAMENG/dm.ini recover_check=0

alter database open force;

select * from test1.test1;

--(4)发现没有查询到c1=5的数据,关闭数据库继续recover,不更新update db_magic,dmserver启动时配置recover_check=0后查询

RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR '/data/dmbak/DAMENG/' UNTIL TIME '2026-05-16 21:24:20';

发现数据已经出现。

--(5)关闭数据库更新update db_magic,正常启动数据库,查询数据

RMAN>RECOVER DATABASE '/data/dmdata/DAMENG/dm.ini' update db_magic;

--(6)启动数据库后查询

select * from test1.test1;

更多达梦数据库运维指南、在线文档、相关资料、社区在线提问以及技术分享

访问 https://eco.dameng.com/

相关推荐
瀚高PG实验室39 分钟前
pgsql-ogr-fdw
数据库·postgresql·瀚高数据库·highgo
IvorySQL40 分钟前
PostgreSQL 技术日报 (6月5日)|PG19 Beta1 上线,PGConf.PL 2026开启征稿
数据库·postgresql·区块链
abcy0712131 小时前
pycharm python sqlalchemy mysql增删改查实例csdn
数据库·oracle
无风听海1 小时前
IndexedDB 深度指南 浏览器中的事务型对象数据库
前端·数据库
咋吃都不胖lyh2 小时前
langgraph基础示例
数据库
网管NO.12 小时前
子查询进阶|EXISTS/IN/ANY/ALL,优化查询效率
数据库·sql
云服务器租用费用3 小时前
2026年腾讯云OpenClaw(Clawdbot)+Skills云上部署及Windows本地集成轻松入门
运维·服务器·数据库·windows·云计算·腾讯云
AllData公司负责人3 小时前
大模型赋能AllData数据中台,系列升级|通过联合智谱大模型与BiSheng开源项目,建设企业大模型应用开发平台,支持知识库向量检索!
大数据·数据结构·数据库·算法·大模型·向量数据库·智谱ai
Raink老师4 小时前
【AI面试临阵磨枪-94】Skill 安全:注入、越权、数据泄露、恶意代码、沙箱?
数据库·安全·面试
程序员二叉4 小时前
【Redis】 缓存三大问题 + 大Key/热Key 全面解析
数据库·redis·缓存