1)物理备份
原理:直接拷贝数据库的物理文件(数据文件、控制文件、重做日志、归档日志等),属于块级(Block-Level)复制,直接备份底层数据文件,不需要解析 SQL 语句和逻辑结构。
核心工具:dmrman(命令行工具)、SQL语句、图形化管理工具(DEM)。
适用场景:生产核心系统、TB级大库、要求RTO分钟级恢复、容灾高可用架构。
冷备与热备:物理备份划分为脱机备份(冷备)与联系备份(热备),冷备通常使用console 控制台工具、dmrman两种;热备通常是数据库在归档开启的情况下,运用客户端工具manager图形化操作,或者disql(SQL命令)方式进行。
2)逻辑备份
原理:将数据库对象(表、视图、存储过程)转换为SQL语句或数据格式,通过导出/导入工具实现备份。
核心工具:dexp(逻辑导出)、dimp(逻辑导入)。
备注:逻辑备份的导出级别可以按照全库、用户、表(表查询QUERY与TABLES)。具体可阅读:达梦数据库命令行导出导入
【https://eco.dameng.com/community/post/20260512225611EBIM8OWMKGUA29RPYO】
适用场景:开发测试环境数据迁移、小表快速恢复、跨平台迁移、数据格式转换(如Oracle→DM)。
1)差异增量备份(日常简称增量备份)
以上一次或最近一次任意备份**当作基线(可以是全备、也可以是上一次增量备份),只备份从上一次备份之后改动的数据页。
恢复依赖:整条备份链必须完整,全备→增量1→增量2→增量3,缺一个就无法恢复。
2)累积增量备份(积累增量)差异
基线永远是最近一次全量备份,备份自从上次全备之后所有改动过的数据页,跳过中间增量备份。
恢复依赖:只需要 全量备份 + 最新一份累积增量,不需要中间增量。
3)举个例子最容易看懂
周一:全量备份 FULL01
周二:差异增量 INC1(对比周一 FULL01)
周三:差异增量 INC2(对比周二 INC1)
周四:累积增量 CUM1(直接对比周一 FULL01)
恢复周三数据:FULL01 → INC1 → INC2,三份备份缺一不可
恢复周四数据:只需要 FULL01 + CUM1 两份即可
4)生产常用备份策略
每周一:全量备份;
周二~周日:每日 差异增量备份(省空间);
每周末 / 月末:执行一次 累积增量,重置恢复链路,防止增量链过长风险。
Sql> backup database full to “DB_DAMENG_FULL_2026_08_17_11_07_16” backupset ‘/dm/backup’;
create table TEST.test1(id int ,sj DATETIME);
INSERT INTO TEST.test1 VALUES(1,SYSDATE);
COMMIT;
Sql> backup database increment to “DB_DAMENG_INCRE_2026_08_17_12_10_45” backupset ‘/dm/backup’;
backup database increment to “DB_DAMENG_INCRE_2026_08_17_12_10_45” backupset ‘DB_DAMENG_INCRE_2026_08_17_12_10_45’; --默认路径 /dm/data/DAMENG/bak/
INSERT INTO TEST.test1 VALUES(1,SYSDATE);
COMMIT;
–backup database increment to “DB_DAMENG_INCRE_2026_08_17_12_31_54” backupset ‘/dm/backup’;
backup database increment to “DB_DAMENG_INCRE_2026_08_17_12_31_54” backupset ‘DB_DAMENG_INCRE_2026_08_17_12_31_54’;; --默认路径 /dm/data/DAMENG/bak/
INSERT INTO TEST.test1 VALUES(3,SYSDATE);
COMMIT;
backup database increment cumulative to
“DB_DAMENG_INCRE_2026_08_17_12_39_27” backupset ‘DB_DAMENG_INCRE_2026_08_17_12_39_27’;–默认路径 /dm/data/DAMENG/bak/
cd /dm/dmdbms/bin
DmServerDAMENG stop
数据表TEST.TEST1 所属表空间为:/dm/data/DAMENG/TEST.DBF
rm -rf /dm/data/DAMENG/TEST.DBF
cd /dm/dmdbms/bin
./DmServiceDMSERVER stop
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’;
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’;
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_39_27’;
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’ DEVICE TYPE disk;
1)第1个差异增量
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’ DEVICE TYPE disk;
2)第2个差异增量
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’ DEVICE TYPE disk;
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_39_27’ DEVICE TYPE disk;
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’;
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’ until time ‘2026-08-17 12:31:00’;
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
cd /dm/dmdbms/bin
./DmServiceDMSERVER start
在实操步骤中,针对存在4个备份集、恢复类型包含2种(从备份集恢复、指定归档恢复);还原可叠加多个备份集操作,恢复采用一种数据集(采用最新的备份数据集)操作,需要对实操组合要清楚具体的实操组合和验证。
注意,实操均在归档开启的前提下。下列组合操作,没有截图展示 第3章节【模拟故障】的停库、删除数据文件,以及最后的【启动数据库】,实际是有操作的。
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
恢复类型-从备份集恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’ DEVICE TYPE disk;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
还原第1个差异增量
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’;
恢复类型-从备份集恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’ DEVICE TYPE disk;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
还原第1个差异增量
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’;
还原第2个差异增量
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’;
恢复类型-从备份集恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’ DEVICE TYPE disk;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
会进行提示:恢复备份集与还原备份集不相同;通常是采用最新的备份集。
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
还原第1个差异增量
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’;
还原第2个差异增量
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’;
恢复类型-从备份集恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’ DEVICE TYPE disk;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
在5.3报错的基础上,进行操作。
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
还原第1个积累增量备份集
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_39_27’;
恢复类型-从备份集恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_39_27’ DEVICE TYPE disk;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
恢复类型-指定归档恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
还原全量备份
RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;
恢复类型-指定归档恢复
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’ until time ‘2026-08-17 12:31:00’;
更新DB_MAGIC,打开数据库
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;
指定时间点为:‘2026-08-17 12:31:00’。
文章
阅读量
获赞
