一 DMRMAN 基础概述DMRMAN 全称DM RECOVERY MANAGER是达梦数据库官方配套脱机备份还原专用管理工具仅支持数据库脱机状态执行全量、增量、归档备份、还原、介质恢复整套流程达梦数据库文件分为数据文件、控制文件、重做日志、归档日志、配置文件dm.ini 等DMRMAN 备份时会统一打包为备份集backupset备份集包含元数据、数据块、归档片段、库配置信息具备独立校验保证备份完整性。整个备份、增量筛选、归档回放、介质恢复的底层核心标识为LSN日志序列号LSN 是全局单调递增的唯一编号数据库每一次事务操作、每一页数据修改都会生成对应 LSN是 DMRMAN 整套备份还原体系的核心标尺。1.1 LSN日志序列号每条事务、数据页修改都会生成唯一递增 LSN全备记录基准 CKPT_LSN增量仅备份LSN 大于基准备份的数据页是增量备份的判断依据。CKPT_LSN检查点LSN所有小于等于 CKPT_LSN的脏页都已经从内存缓冲区刷新写入数据文件磁盘CKPT_LSN 之前的重做日志理论上不再用于实例崩溃恢复仅用于介质恢复每次执行全量检查点、增量检查点都会刷新 CKPT_LSN介质恢复时数据文件头部记录的 CKPT_LSN 是恢复起点。BEGIN_LSN备份起始 LSN取值规则BEGIN_LSN CKPT_LSN 1全量备份开始触发一次检查点刷新 CKPT_LSN 后把下一个 LSN 作为日志恢复起点增量备份会继承上一次备份的 END_LSN 作为本次 BEGIN_LSN介质恢复时归档日志从 BEGIN_LSN 开始回放。END_LSN备份终止 LSN代表本次备份能够保证一致性的最大日志位点全量 / 增量备份结束时记录 END_LSN下一次增量备份的 BEGIN_LSN 就等于上一次 END_LSN完整介质恢复需要把日志回放至 END_LSN才能保证备份集数据一致如果缺少 BEGIN_LSN ~ END_LSN 之间的归档日志本次备份无法完成一致性恢复。FILE_LSN联机日志文件 LSNFILE_LSN 代表联机日志已经写入的最新事务位点FILE_LSN ≥ END_LSN ≥ CKPT_LSN日志切换时FILE_LSN 会更新并写入新日志文件头部FILE_LSN 只反映联机日志写入进度不代表脏页已经刷盘实例崩溃恢复时会扫描联机日志一直回放至当前 FILE_LSN。1.2 数据恢复restore与recover阶段官方定义执行动作依赖文件执行时机RESTORE还原物理文件拷贝阶段从备份集覆盖数据文件、控制文件、dm.ini仅恢复备份快照静态数据无事务回放全备 / 增量备份集恢复第一步RECOVER介质恢复事务重做阶段读取增量变更页 / 归档日志回放 REDO 事务推进数据库到指定时间 / LSN 一致性状态增量备份集、归档日志RESTORE 之后1.3 DB_MAGIC 数据库魔数每个达梦数据库初始化后会生成全局唯一DB_MAGIC魔数作为数据库身份标识存储于控制文件、数据文件、归档日志、备份集头部。本地同实例恢复还原后库与原库魔数一致自动匹配归档无需额外配置跨实例恢复备库归档恢复主库、异机恢复源库归档 / 备份集src_db_magic与新库魔数不匹配DMRMAN 默认过滤归档必须手动指定use db_magic参数强制读取源归档。update db_magic恢复完成后更新新库魔数生成全新归档链否则数据库启动后归档报错、无法写入新归档。二 数据库备份2.1 完全备份读取数据库全部数据页、控制文件、配置文件生成完整基准备份集生产环境建议每周执行一次全备作为增量备份基线。RMANbackupdatabase/data/dmdata/DAMENG/dm.initoT_FULLBAK_01 backupset/drmanbak/T_FULLBAK_01;2.2 增量备份对比基准备份中每个数据页的 LSN 日志序列号仅备份自上次备份后发生修改的数据页备份速度快、占用存储少适合每日高频备份。可 Disql 联机在线进行数据库全备使用 RMAN 进行脱机增量备份。#差异备份RMANbackupdatabase/data/dmdata/DAMENG/dm.iniincrementwithbackupdir/drmanbak/T_FULLBAK_01toT_INCREMENT_01 backupset/drmanbak/T_INCREMENT_01;#累积增量备份RMANbackupdatabase/data/dmdata/DAMENG/dm.iniincrement cumulativewithbackupdir/drmanbak/T_FULLBAK_01toT_CUM_INCREMENT_01 backupset/drmanbak/T_CUM_INCREMENT_01;两者区别类型关键字对比基线恢复优势缺点差异增量无 cumulative上一次任意备份备份速度快、体积小多层增量恢复时需要依次应用所有增量链累积增量cumulative最近一次全备恢复链短只需全备 最新一份累积增量每次备份的数据量更大耗时、占用存储更多2.3 归档备份归档日志记录数据库所有 DML/DDL 事务操作单独备份归档可实现任意时间点回滚支持全归档、LSN 区间、时间区间三种备份维度。--对所有归档进行备份RMANbackuparchive logalldatabase/data/dmdata/DAMENG/dm.inibackupset/drmanbak/drman_archbak_01;--对指定LSN范围内的归档进行备份RMANbackuparchive log LSNbetween48371and48391database/data/dmdata/DAMENG/dm.inibackupset/drmanbak/drman_archbak_02;--对指定时间范围内的归档进行备份RMANBACKUPARCHIVE LOGTIMEBETWEEN2026-06-30 00:00:00AND2026-06-30 12:00:00DATABASE/data/dmdata/DAMENG/dm.iniBACKUPSET/drmanbak/drman_archbak_03;三 数据库恢复3.1 恢复前置步骤3.1.1 初始化目标数据库准备目标库。还原目标库可以是已存在的数据库也可以参考数据库软件目录 log/dminit_*.log 文件使用 dminit 工具初始化一个新库初始化时可参考源库初始化日志log/dminit_*.log复制参数不可随意修改 PAGE_SIZE、EXTENT_SIZE。dminitPATH/data/dmdata/EXTENT_SIZE32PAGE_SIZE32LOG_SIZE2048SYSDBA_PWDXXXXXSYSAUDITOR_PWDXXXX初始化完成后停止实例确保无 dmserver 进程运行。3.1.2 校验备份集合法性RMANcheckbackupset/drmanbak/T_INCREMENT_01;checkbackupset/drmanbak/T_INCREMENT_01;[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]checkbackupset successfully.timeused:449.476(ms)校验失败说明备份损坏、文件缺失禁止执行还原。3.2 全备增量恢复适用场景无需精确时间点仅恢复到最后一次增量备份时刻数据。完整执行流程还原物理文件自动串联全备 整条增量链--restore时如果有增量备份时, backupset 直接指定到最新增量备份会自动使用全备增量备份RMANrestoredatabase/data/dmdata/DAMENG/dm.inifrombackupset/drmanbak/T_INCREMENT_01;--REUSE DMINI 子句进行数据库还原此时会将备份集中备份的 dm.ini 中除路径相关的 INI 参数外均拷贝到当前 dm.ini 上RMANrestoredatabase/data/dmdata/DAMENG/dm.inireuse dminifrombackupset/drmanbak/T_INCREMENT_01;应用增量备份变更数据RMANrecoverdatabase/data/dmdata/DAMENG/dm.inifrombackupset/drmanbak/T_INCREMENT_01;更新数据库 DB_MAGICRMANrecoverdatabase/data/dmdata/DAMENG/dm.iniupdatedb_magic;3.3 全备增量归档恢复适用场景数据误操作、磁盘损坏需要恢复至故障前最新业务状态。完整执行流程restore数据库全备--restore时如果有增量备份时, backupset 直接指定到最新增量备份会自动使用全备增量备份RMANrestoredatabase/data/dmdata/DAMENG/dm.inifrombackupset/drmanbak/T_INCREMENT_01;--REUSE DMINI 子句进行数据库还原此时会将备份集中备份的 dm.ini 中除路径相关的 INI 参数外均拷贝到当前 dm.ini 上RMANrestoredatabase/data/dmdata/DAMENG/dm.inireuse dminifrombackupset/drmanbak/T_INCREMENT_01;recover应用归档--直接应用归档到数据库最新状态RMANrecoverdatabase/data/dmdata/DAMENG/dm.iniwitharchivedir/dmarch;--如果存在误删除数据恢复到误删数据之前的状态RMANrecoverdatabase/data/dmdata/DAMENG/dm.iniwitharchivedir/dmarchuntiltime2026-06-30 17:00:28;--指定LSN恢复RMANrecoverdatabase/data/dmdata/DAMENG/dm.iniwitharchivedir/dmarchuntil LSN53167;每个达梦库有一个DB_MAGIC数据库魔数是库的唯一标识本地同实例恢复无需添加 DB_MAGIC。当主库归档丢了 / 删了需要用备库 / 主备集群另一节点的归档恢复由于备库归档的 DB_MAGIC ≠ 主库当前 DB_MAGICRMAN 默认只应用和当前库DB_MAGIC 一致的归档因此默认会被过滤必须指定要使用归档的DB_MAGIC 。--获取源库的DB_MAGICRMANshowbackupset/drmanbak/T_INCREMENT_01info db;showbackupset/drmanbak/T_INCREMENT_01info db;backupset[DEVICETYPE:DISK,BACKUP_PATH:/drmanbak/T_INCREMENT_01]infostart..........DB INFOsystem path:/data/dmdata/DAMENG pmnt_magic:1241059347src_db_magic:1679251082db_magic:1679251082----源库db_magic值dsc node:1sysmode:0pagecheck:3rlog encrypt:0rlog encrypt id:0external cipher id:0externalhashid:0lengthinchar:0usenewhash:1page size:32KB extent size:16casesensitive:1log page size:512B unicode_flag/charset:0dataversion:0x7000Dsys version: V8 version:03134284552-20260414-322369-20221pseg version:0x7000Cenablepolicyn:0archive flagn:1blank_pad_mode:0crc_check:TRUEpage_enc_slice_size:4096char_fix_storage:0sql_log_forbid:0secur_flag:2db_enc_extend_size:0page_check_hash_size:0dpc_magic:0bak_safe_check:7page_chksum_policy:1lockid_mode:1backupset[DEVICETYPE:DISK,BACKUP_PATH:/drmanbak/T_INCREMENT_01]infoend.showbackupsets successfully.--利用该库的归档进行恢复RMANrecoverdatabase/data/dmdata/DAMENG/dm.iniwitharchivedir/dmarchusedb_magic1679251082;更新数据库 DB_MAGICRMANrecoverdatabase/data/dmdata/DAMENG/dm.iniupdatedb_magic;四 备份集生命周期管理4.1 查看备份集详细元数据# 查看备份集基础信息show backupset/drmanbak/drman_archbak_03;# 查看备份集数据库信息获取DB_MAGIC、页大小、版本等show backupset/drmanbak/T_INCREMENT_01info db;4.2 备份集合法性校验备份传输、磁盘坏道易导致备份损坏恢复前强制校验# 校验普通数据备份集check backupset/drmanbak/T_INCREMENT_01;# 校验归档备份集绑定数据库dm.inicheck backupset/drmanbak/drman_archbak_03database/data/dmdata/DAMENG/dm.ini;4.3 备份集删除清理自动删除磁盘备份文件支持单条删除、按时间批量清理、全量清空# 1. 删除单个备份集, 磁盘对应的备份文件也会删除remove backupset/drmanbak/drman_archbak_03;# 2. 批量删除指定时间之前所有备份备份过期清理策略remove backupsets with backupdir/drmanbak/untiltime2026-06-30 17:50:00;# 3. 清空目录下全部备份集谨慎执行remove backupsets with backupdir/drmanbak/;五 DMRMAN 相关日志所有备份还原故障、报错、进度信息均记录在独立日志日志路径默认在达梦实例日志目录。5.1 核心日志文件日志文件名用途生成场景dm_实例名_xxx.log数据库实例事件日志实例启停、归档切换、数据库异常dm_BAKRES_xxx.log备份还原核心日志DMRMAN 脱机备份、Disql 联机备份全量记录包含进程 ID、时间、报错堆栈dm_SBTTRACE_xxx.logSBT 存储介质跟踪日志使用第三方存储备份对象存储、磁带库时 IO 跟踪dm_dmrman_xxx.logDMRMAN 工具独立日志单独执行 dmrman 命令时的操作日志命令执行失败优先查看5.2 dm_BAKRES 日志不可手动配置开关执行备份 / 还原自动生成日志内容字段生成时间、日志级别INFO/WARN/ERROR、进程名、PID、任务发起进程 ID故障排查场景备份中断、还原报参数不匹配、归档无法加载优先检索该日志ERROR关键字定位根因。