注册
备份还原与DMAP知识总结
专栏/技术分享/ 文章详情 /

备份还原与DMAP知识总结

Ariamaru 2026/07/17 184 0 0
摘要

备份与还原

基本概念

重做日志(REDO 日志)

  • 内容:记录所有物理页的修改(操作类型、表空间号、文件号、页号、偏移、数据等)。
  • 存储文件:默认两个 .log 文件,循环使用。
  • 关键规则:数据页从内存刷入磁盘之前,其对应的 REDO 日志必须已写入联机日志文件。
  • 日志包(RLOG_PKG):保存 REDO 日志的数据单元,包内 LSN 在未开启并行日志时递增,开启并行日志时局部有序、整体无序。

归档日志

  • 模式要求:系统在归档模式下运行更安全。联机备份必须运行在归档模式下(除表备份还原外)。
  • 存放建议:归档目录与数据文件放在不同物理磁盘上。
  • 相关归档类型:本地归档和远程归档与备份还原密切相关。
  • 写入流程:REDO 日志先写入联机日志文件,然后异步写入本地归档日志文件。

LSN(Log Sequence Number)

  • 属性:BIGINT 类型,自动递增、全局唯一,每个 LSN 代表一个物理事务(ptx)。
  • 常见 LSN 类型:
LSN 类型 含义
CUR_LSN 系统已分配的最大 LSN。
FLUSH_LSN 已发起刷盘请求、但未真正写入联机日志的最大 LSN。
FILE_LSN 已写入联机日志文件的最大 LSN。
CKPT_LSN 检查点 LSN:所有 LSN ≤ CKPT_LSN 的修改页都已刷盘。故障重启时从 CKPT_LSN+1 开始重做日志。
APPLY_LSN 还原恢复后已写入联机日志的原始最大 LSN(取自源库)。
RPKG_LSN 还原恢复后已经重演日志的最大 LSN。
  • 联机日志覆盖规则:LSN ≤ CKPT_LSN 的 REDO 日志可以被覆盖。

包序号(PKG SEQNO)

  • 本地包序号(LSEQ):节点内唯一、连续递增,用于校验联机日志连续性。
  • 全局包序号(GSEQ):主备库共同维护,全局唯一、连续递增,用于校验归档日志连续性。
  • 常见 GSEQ 类型:
序号类型 含义
CUR_SEQ 系统已分配的最大全局包序号(写入联机日志前分配)。
FILE_SEQ 已写入联机日志文件的最大全局包序号。
APPLY_SEQ 还原恢复后已写入联机日志的原始最大全局包序号。
RPKG_SEQ 还原恢复后已经重演日志的最大全局包序号。

检查点(Checkpoint)

  • 功能:将数据缓冲区中的脏页按修改顺序写入磁盘,并动态调整 CKPT_LSN,释放日志空间。
  • 完全检查点:将所有脏页写入磁盘。数据库正常关闭时产生。
  • 部分检查点:根据 dm.ini 中的 CKPT_FLUSH_RATE / CKPT_FLUSH_PAGES 控制每次刷脏页数量,大多数情况下触发,且 DDL/DML 可正常执行。
  • 日志覆盖与有效日志:
    • 可用日志空间:联机日志中可覆盖写入的部分。
    • 有效日志(故障重启需要重做):LSN 取值范围为 (CKPT_LSN, FILE_LSN]。

img

概念 说明
表空间 逻辑存储单元。系统自动创建SYSTEM、ROLL、RLOG、MAIN、TEMP;支持用户自定义。
数据文件 物理存储文件(.DBF)。TEMP表空间不支持物理备份还原。
重做日志 记录所有物理页修改(REDO),用于故障恢复。
归档日志 系统在归档模式下运行更安全。联机备份必须开启本地归档。
LSN 全局唯一、递增的日志序列号,代表一个物理事务。
检查点 将内存脏页写入磁盘,并调整CKPT_LSN,释放日志空间。
备份集 一次完整备份的产物:包含备份片(.bak) + 元数据文件(.meta)。

备份类型

分类维度 类型 关键点
数据库状态 联机备份 数据库运行中执行,最常用,必须开启归档。
脱机备份 数据库关闭后执行(用DMRMAN),异常关闭的库需先修复归档。
内容粒度 数据备份 包含库备份、表空间备份、表备份。
归档日志备份 仅备份归档日志,不包含数据文件。
数据完整性 一致性备份 包含完整数据+REDO日志,可恢复至备份时状态。
非一致性备份 只含数据(如指定WITHOUT LOG),还原后需借助归档恢复。
数据量 完全备份 备份全部有效数据页。
增量备份 基于基备份,只备份修改的页。分为差异增量(基可是完全或增量)和累积增量(基只能是完全)。表备份和归档备份不支持增量。

联机备份过程中,用户可以正常访问、修改数据库,为了准确记录备份过程中产生了哪些 REDO 日志,确定日志备份范围,我们特别定义了下述几个包序号和 LSN:

  • 节点 BEGIN_LSN

为了保证备份的完整性和有效性,必须包含的归档日志起始 LSN 值。BEGIN_LSN = 备份开始时检查点偏移前一个 RLOG_PKG 的 max_lsn。

  • 节点 BEGIN_SEQ

BEGIN_SEQ 记录了 BEGIN_LSN 所在 Redo 日志包的序号。

  • 节点 END_LSN

为了保证备份的完整性和有效性,必须包含归档日志结束 LSN 值。END_LSN = 备份结束时 FILE_LSN。

  • 节点 END_SEQ

END_SEQ 记录了 END_LSN 所在 REDO 日志包的序号。

  • BAK_END_LSN

备份结束时,可以保证事务一致性的全局备份结束 LSN。单节点 BAK_END_LSN 等于 END_LSN;DSC 集群环境中,每个节点的 END_LSN 都不相同,BAK_END_LSN 大于等于最大的 END_LSN。

如果 BEGIN_SEQ 等于 END_SEQ,则表明备份过程中,该节点没有任何数据被修改。为了简化还原过程,增量备份时要求 BEGIN_LSN 必须大于等于基准备份的 END_LSN,如果不满足条件,则强制生成检查点,直到 BEGIN_LSN 满足条件为止。

还原类型

还原类型 支持状态 说明
库还原 脱机 从库备份集还原整个数据库。
表空间还原 脱机 从表空间或库备份集还原,目标不能是TEMP。
表还原 联机 从表备份集还原,同时重建索引、约束。
归档日志还原 联机/脱机 将归档备份集中的日志恢复到指定目录。
增量还原 依赖基备份 若基备份集被删除,则增量备份集无法单独还原。

还原的基本过程

  • 操作:从备份集读取数据页 → 写入目标数据库对应数据文件的相应位置
  • 注意事项:还原结束后目标库可能处于非一致性状态(因为联机/脱机备份时可能存在活动事务或非正常关闭),必须执行恢复操作后才能启动。

备份还原过程总结

备份类型 步骤 恢复子步骤
库备份 备份 → 还原 恢复一致性 + 更新DB_MAGIC
表空间备份 备份 → 还原 仅恢复一致性
表备份 备份 → 还原 无(仅数据还原)
归档备份 备份 → 还原 无(仅数据还原)

恢复

  • 恢复是重做本地归档日志或者备份集中备份的归档日志的操作
  • 没有经历恢复的还原数据库是不允许启动的。
  • 表备份还原是联机执行的,不需要恢复操作

DMAP辅助进程

DMAP是什么

DMAP(Dameng Auxiliary Process)是达梦数据库的辅助进程,是一个关键的守护进程,主要负责备份还原相关的支持工作。

  • 服务名称:DmAPService(Linux)或 DmAPService.exe(Windows)
  • 安装位置:DM安装目录的 bin 子目录下
  • 默认状态:数据库安装完成后,DMAP服务会自动启动

DMAP的核心功能

功能 说明
备份辅助 作为备份还原任务的执行插件,负责读写备份片文件和元数据文件
加密压缩 大幅提升备份过程中加密、压缩的处理效率
并行处理 支持指定并行度,可多线程同时执行备份任务
第三方存储 支持第三方备份存储介质(如磁带库、专业备份软件)
备份集访问 所有访问备份集的操作(备份、还原、校验、查看视图)都需要DMAP支持

DMAP与备份还原的关系

两种备份策略

达梦数据库提供两种备份还原实现策略,通过参数控制:

策略 参数值 特点 前提条件
DMAP辅助进程方式 bak_use_ap=1(联机) use_ap=1(脱机) 支持第三方备份,效率高,支持并行 必须启动DMAP服务
无辅助进程方式 bak_use_ap=2(联机) use_ap=2(脱机) 不依赖DMAP,由主进程执行 不支持第三方备份

https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服