注册
达梦数据库增量备份与指定时间点恢复
专栏/技术分享/ 文章详情 /

达梦数据库增量备份与指定时间点恢复

畴野清风 2026/08/21 217 0 0
摘要

1 理论知识

1.1 备份方式两种

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.2 差异增量备份(普通增量)VS 累积 (积累) 增量备份

1)差异增量备份(日常简称增量备份)
以上一次或最近一次任意备份**当作基线(可以是全备、也可以是上一次增量备份),只备份从上一次备份之后改动的数据页。
恢复依赖:整条备份链必须完整,全备→增量1→增量2→增量3,缺一个就无法恢复。
2)累积增量备份(积累增量)差异
基线永远是最近一次全量备份,备份自从上次全备之后所有改动过的数据页,跳过中间增量备份。
恢复依赖:只需要 全量备份 + 最新一份累积增量,不需要中间增量。
3)举个例子最容易看懂
周一:全量备份 FULL01
周二:差异增量 INC1(对比周一 FULL01)
周三:差异增量 INC2(对比周二 INC1)
周四:累积增量 CUM1(直接对比周一 FULL01)
恢复周三数据:FULL01 → INC1 → INC2,三份备份缺一不可
恢复周四数据:只需要 FULL01 + CUM1 两份即可
4)生产常用备份策略
每周一:全量备份;
周二~周日:每日 差异增量备份(省空间);
每周末 / 月末:执行一次 累积增量,重置恢复链路,防止增量链过长风险。

1.3 本次增量备份与指定时间点恢复是针对物理备份方式实现

2 备份实操

2.1 全量备份

Sql> backup database full to “DB_DAMENG_FULL_2026_08_17_11_07_16” backupset ‘/dm/backup’;

2.2 数据更新1

create table TEST.test1(id int ,sj DATETIME);

INSERT INTO TEST.test1 VALUES(1,SYSDATE);
COMMIT;

2.3 差异增量备份1

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/

2.4 数据更新2

INSERT INTO TEST.test1 VALUES(1,SYSDATE);
COMMIT;

2.5 差异增量备份2

–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/

2.6 数据更新3

INSERT INTO TEST.test1 VALUES(3,SYSDATE);
COMMIT;

2.7 积累增量备份1

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/

3 模拟故障

3.1 停库

cd /dm/dmdbms/bin
DmServerDAMENG stop

3.2 删除数据文件

数据表TEST.TEST1 所属表空间为:/dm/data/DAMENG/TEST.DBF
rm -rf /dm/data/DAMENG/TEST.DBF

4 实操步骤

4.1 关闭数据库

cd /dm/dmdbms/bin
./DmServiceDMSERVER stop

4.2 还原

4.2.1 还原全量备份

RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’;

4.2.2 还原差异增量备份集1

RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_10_45’;

4.2.3 还原差异增量备份集2

RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_31_54’;

4.2.4 还原积累增量备份集1

RESTORE DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/data/DAMENG/bak/DB_DAMENG_INCRE_2026_08_17_12_39_27’;

4.3 恢复

4.3.1 恢复类型-从备份集恢复

4.3.1.1 从全量备份集恢复

RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ FROM BACKUPSET ‘/dm/backup’ DEVICE TYPE disk;

4.3.1.2 从差异备份集恢复

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;

4.3.1.3 从积累增量备份集恢复

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;

4.3.2 恢复类型-指定归档恢复

4.3.2.1 完全恢复

RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’;

4.3.2.2 指定时间点恢复

RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/arch’ until time ‘2026-08-17 12:31:00’;

4.4 更新DB_MAGIC

RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ UPDATE DB_MAGIC ;

4.5 启动数据库

cd /dm/dmdbms/bin
./DmServiceDMSERVER start

5 实操组合以及验证

在实操步骤中,针对存在4个备份集、恢复类型包含2种(从备份集恢复、指定归档恢复);还原可叠加多个备份集操作,恢复采用一种数据集(采用最新的备份数据集)操作,需要对实操组合要清楚具体的实操组合和验证。
注意,实操均在归档开启的前提下。下列组合操作,没有截图展示 第3章节【模拟故障】的停库、删除数据文件,以及最后的【启动数据库】,实际是有操作的。

5.1 还原【全量备份集】+恢复【全量备份集】+MAGIC

还原全量备份
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 ;
图片.png
图片.png

5.2 还原【全量备份集+差异增量备份集1】+恢复【差异增量备份集1】+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 ;
图片.png
图片.png

5.3 还原【全量备份集+差异增量备份集1+差异增量备份集2】+恢复【差异增量备份集1】+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 ;
图片.png
会进行提示:恢复备份集与还原备份集不相同;通常是采用最新的备份集。

5.4 还原【全量备份集+差异增量备份集1+差异增量备份集2】+恢复【差异增量备份集2】+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 ;
图片.png
在5.3报错的基础上,进行操作。
图片.png

5.5 还原【全量备份集+积累备份集1】+恢复【积累备份集1】+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_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 ;
图片.png
图片.png

5.6 还原【全量备份集】+恢复【指定归档】+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 ;
图片.png
图片.png

5.7 还原【全量备份集】+恢复【指定归档+指定时间点】+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 ;
图片.png
指定时间点为:‘2026-08-17 12:31:00’。
图片.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服