前言
本文讲解物理备份,覆盖核心概念、归档配置、联机 disql 备份、脱机 DMRMAN 备份还原。 DM8 物理备份是直接拷贝数据库有效数据页,分为联机备份(库运行,disql 执行 SQL)、脱机备份(库关闭,DMRMAN 工具);备份载体叫备份集,包含.meta 元数据文件 +.bak 备份片。核心依赖归档日志,无归档无法执行联机库 / 表空间备份,支持时间点、LSN 精准恢复,是生产环境核心容灾手段。
一、备份还原基础核心概念
1.1 核心存储组件
- 表空间:DM 内置 SYSTEM、ROLL、RLOG、MAIN、TEMP 五大系统表空间,TEMP 不支持物理备份;业务自建用户表空间用于存放业务数据。
- 重做日志(REDO):记录所有 DML/DDL 数据修改,循环写入联机.log 日志文件,故障重启靠重做日志恢复内存脏页。
- 归档日志:联机日志写满后归档生成离线文件,永久保存,是时间点恢复的唯一依赖,分为 LOCAL 本地归档、REMOTE 远程归档(DSC 集群专用)。
1.2 关键标识概念
- LSN:全局唯一递增物理事务编号,每一次数据修改分配独立 LSN,CKPT_LSN 代表已落盘数据页边界,故障只需重做 CKPT_LSN 之后日志。
- 备份集:单次备份生成的目录,由元数据.meta、数据备份片.bak 组成;支持压缩、加密、多文件拆分。
1.3 备份分类标准
- 按运行状态:联机(OPEN 库,disql 执行)、脱机(库关闭,DMRMAN 执行)
- 按备份范围:库备份、表空间备份、单表备份、归档备份
- 按完整度:完全备份、增量备份(差异 / 累积增量)
- 恢复两步流程:还原(拷贝备份数据至库文件)+ 恢复(重做归档日志至一致性状态,表备份无需恢复)
二、前置准备:归档配置(所有联机备份前提)
2.1 归档开启
dm.ini 参数ARCH_INI=1,配套 dmarch.ini 归档配置文件;未开启归档,无法执行库、表空间联机备份,仅单表备份不受限制。
2.2 联机 SQL 配置归档
-- 切换至MOUNT模式才能修改归档 ALTER DATABASE MOUNT; ALTER DATABASE NORMAL; -- 开启归档模式 ALTER DATABASE ARCHIVELOG; -- 添加本地归档 ALTER DATABASE ADD ARCHIVELOG 'DEST=/dm_arch,TYPE=LOCAL,FILE_SIZE=1024,SPACE_LIMIT=0'; -- 切回业务运行状态 ALTER DATABASE OPEN;2.3 手动文件配置归档
- 编辑 dm.ini,修改
ARCH_INI = 1 - 同目录新建 dmarch.ini
[ARCH_LOCAL1] ARCH_TYPE=LOCAL ARCH_DEST=/dm_arch ARCH_FILE_SIZE=1024 ARCH_SPACE_LIMIT=0 ARCH_HANG_FLAG=1启动数据库实例,数据库已运行于归档模式。
三、disql 联机备份实操
disql 是达梦交互式客户端,库处于 OPEN 状态执行备份,支持库、表空间、单表、归档四类备份。
3.1 数据库级联机备份
语法基础:BACKUP DATABASE [FULL/INCREMENT] BACKUPSET '备份路径'
3.1 完全备份
BACKUP DATABASE FULL BACKUPSET '/dm_bak/db_full_202606' COMPRESSED LEVEL 3 PARALLEL 4 BACKUPINFO '六月全量库备份';关键参数说明:
- COMPRESSED LEVEL:0~9 压缩等级,数字越高压缩越强、CPU 消耗越大
- PARALLEL:并行备份,提升大库备份速度
- BACKUPINFO:自定义备份备注,方便后期识别
3.2 差异增量备份(基于最近任意备份)
BACKUP DATABASE INCREMENT BACKUPSET '/dm_bak/db_inc_20260629' WITH BACKUPDIR '/dm_bak';WITH BACKUPDIR 指定基备份搜索目录,自动寻找最近全量 / 增量作为基准。
3.3 累积增量(仅基于完全备份)
BACKUP DATABASE INCREMENT CUMULATIVE BACKUPSET '/dm_bak/db_cum_0629';3.2 表空间联机备份
仅备份指定表,速度更快,适合核心业务表单独保护,支持增量
-- MAIN表空间完全备份 BACKUP TABLESPACE MAIN FULL BACKUPSET '/dm_bak/ts_main_0629';3.3 单表备份(无需开启归档)
仅备份指定业务表,跨库恢复需保证建库参数一致(页大小、字符集等)
-- 普通表备份 BACKUP TABLE USER_INFO BACKUPSET '/dm_bak/tab_user'; -- 仅备份表结构,后续还原只重建表 BACKUP TABLE USER_INFO STRUCT BACKUPSET '/dm_bak/tab_struct';表还原(仅联机支持,无需恢复步骤)
RESTORE TABLE USER_INFO FROM BACKUPSET '/dm_bak/tab_user'; -- 还原不重建索引 RESTORE TABLE USER_INFO WITHOUT INDEX FROM BACKUPSET '/dm_bak/tab_user';3.4 归档日志备份
单独备份归档文件,用于归档长期留存、跨机房日志迁移
BACKUP ARCHIVE LOG ALL BACKUPSET '/dm_bak/arch_bak_06'; -- 指定时间区间归档备份 BACKUP ARCHIVE LOG TIME BETWEEN '2026-06-01' AND '2026-06-29' BACKUPSET '/dm_bak/arch_june';3.5 备份集基础管理(disql 查询)
添加备份目录至检索列表,查看备份信息
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm_bak'); -- 查看所有备份集基础信息 SELECT BACKUP_PATH,TYPE,BACKUP_TIME FROM V$BACKUPSET; -- 校验备份集完整性 SELECT SF_BAKSET_CHECK('DISK','/dm_bak/db_full_202606'); -- 删除过期备份 SELECT SF_BAKSET_REMOVE_BATCH('DISK',NOW(),1,NULL);四、DMRMAN 脱机备份还原(数据库关闭执行)
DMRMAN 是达梦脱机专用工具,存放于/dmdbms/bin,库停止后执行全库备份、完整还原恢复,适合机房停机维护、整机故障重建。
4.1 DMRMAN 启动方式
# 交互式进入RMAN控制台 ./dmrman # 直接执行单条命令后退出 ./dmrman CTLSTMT="BACKUP DATABASE '/dmdata/DAMENG/dm.ini' BACKUPSET '/dm_bak/off_full'" # 执行脚本文件 ./dmrman CTLFILE=/home/rman_cmd.txt4.2 脱机库完全备份
RMAN> BACKUP DATABASE '/dmdata/DAMENG/dm.ini' FULL BACKUPSET '/dm_bak/offline_full' COMPRESSED LEVEL 2 PARALLEL 3;4.3 脱机增量备份
RMAN> BACKUP DATABASE '/dmdata/DAMENG/dm.ini' INCREMENT BACKUPSET '/dm_bak/off_inc' WITH BACKUPDIR '/dm_bak';4.4 完整脱机还原 + 恢复(故障重建核心流程)
还原 = 拷贝备份数据;恢复 = 重做归档至一致状态,两步缺一不可
# 1. 执行数据还原 RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/dm_bak/offline_full'; # 2. 重做归档日志,恢复至一致性 RECOVER DATABASE '/dmdata/DAMENG' WITH ARCHIVEDIR=/dm_arch; # 3. 可选:恢复至指定时间点 RECOVER DATABASE '/dmdata/DAMENG' WITH ARCHIVEDIR=/dm_arch UNTIL TIME '2026-06-28 23:59:00';4.5 脱机归档备份
BACKUP ARCHIVE LOG DATABASE '/dmdata/DAMENG/dm.ini' BACKUPSET '/dm_bak/off_arch';五、加密与压缩备份通用配置
线上数据建议开启加密压缩,所有备份语句通用参数
- 压缩配置:
COMPRESSED LEVEL 1~9 - 加密配置:IDENTIFIED BY 密码
-- disql加密库备份示例 BACKUP DATABASE FULL BACKUPSET '/dm_bak/encrypt_bak' IDENTIFIED BY "Dm@2026" ENCRYPT WITH RC4 COMPRESSED LEVEL 3;加密备份还原必须填写相同密码,否则报错无法读取备份集。
六、新手实操避坑要点
- TEMP 表空间不参与任何物理备份,无需操作;
- 联机库 / 表空间备份必须开启本地归档,仅单表备份无归档限制;
- 备份集路径禁止中文、空格,避免解析异常;
- 库、表空间还原只能 DMRMAN 脱机执行,仅表支持 disql 联机还原;
- 归档磁盘满会触发数据库挂起,定时归档备份并清理过期归档;
七、总结
本文基于 DM8 备份还原手册整理,区分 disql 联机、DMRMAN 脱机两套备份方案,覆盖库、表空间、单表、归档四类备份场景,包含全量 / 增量、加密压缩、时间点恢复实操命令。物理备份是达梦核心容灾手段,日常运维必备,每周可以设定定时备份作业。