注册
达梦备份还原
专栏/技术分享/ 文章详情 /

达梦备份还原

wwwwww 2026/09/18 399 0 0
摘要

1. 基础概念

1.1 概念定义

概念 说明
联机备份 数据库运行状态下执行的备份,不影响业务服务,是生产环境的首选方式;前提是数据库必须处于归档模式
脱机备份 数据库关闭后使用 DMRMAN 工具执行的备份
物理备份 对数据文件中的数据页进行拷贝,用于数据库还原与时间点恢复
逻辑备份 通过 dexp 工具将对象数据导出为 dmp 文件,用于跨平台迁移、单表或单模式恢复
完全备份 备份指定对象的全部有效数据页,是增量备份与恢复的基础
差异增量备份 以最近一次备份(完全或增量)为基备份,备份量小,恢复时需要按增量链依次重做
累积增量备份 仅以完全备份为基备份,备份量随全量间隔增长,恢复时仅需"完全备份 + 最后一次累积增量"两步
归档日志 联机日志的持久化载体,用于恢复至故障前一刻或指定时间点
LSN 日志序列号,全局唯一且递增,是定位归档范围与时间点恢复的核心坐标
数据库魔数 PERMANENT_MAGIC 永久不变;DB_MAGIC 在每次还原、恢复后发生变化,用于区分备份源库与还原目标库

1.2 数据库魔数查询

SELECT PERMANENT_MAGIC; SELECT DB_MAGIC FROM V$RLOG;

2. 备份策略设计

2.1 恢复指标定义

备份策略设计首先需要明确以下两项恢复指标,并与业务方确认:

  • RPO(恢复点目标):业务可容忍的最大数据丢失量。例如要求不超过 15 分钟,表示故障发生后最多丢失 15 分钟内的数据;
  • RTO(恢复时间目标):业务可容忍的最大停机时间。例如要求全库恢复不超过 60 分钟。

此外,还需评估数据库数据量规模与业务备份窗口,全量备份宜安排在业务低谷时段(如周日凌晨)执行。

2.2 策略选型原则

  1. 采用"全量 + 差异增量"组合,在存储成本与恢复时间之间取得平衡;
  2. 采用联机备份方式,适应生产环境 7×24 小时不间断运行的要求,但必须预先启用归档模式;
  3. 逻辑备份弥补物理备份的不足,覆盖跨平台迁移与单对象恢复场景;
  4. 备份集与源库严禁存放于同一存储介质;
  5. 备份目录与备份集名称应避免使用中文、空格及特殊字符。

2.3 备份容量规划

总存储空间需求按以下公式估算:

总空间 ≈ 全量备份集 × 保留期内全量个数 + 增量备份日均 × 保留天数
        + 归档日志日均 × 保留天数 + 逻辑备份日均 × 保留天数

计算结果建议额外预留 20% 冗余。备份存储空间使用率达到 80% 时发出预警,达到 90% 时触发紧急告警。

3. 逻辑备份与恢复(dexp/dimp)

3.1 逻辑导出(dexp)

# 全库导出 dexp USERID=SYSDBA/pwd@127.0.0.1:5236 FILE=full_YYYYMMDD.dmp \ DIRECTORY=/opt/dm_backup/data/full FULL=Y COMPRESS=Y COMPRESS_LEVEL=5 PARALLEL=8 # 按模式导出 dexp USERID=... FILE=schema_YYYYMMDD.dmp DIRECTORY=... SCHEMAS=USER01,USER02 COMPRESS=Y # 按表导出(支持 QUERY 条件过滤) dexp USERID=... FILE=table_YYYYMMDD.dmp DIRECTORY=... \ TABLES=SYSDBA.FACT_ORDER QUERY="WHERE AGE=19"

3.2 逻辑导入(dimp)

dimp 的导入级别(FULL/SCHEMAS/TABLES)与 dexp 的导出级别一一对应:

# 全库导入 dimp USERID=... FILE=full_20260811.dmp DIRECTORY=... FULL=Y # 模式导入并改名(适用于测试环境) dimp USERID=... FILE=schema_20260811.dmp SCHEMAS=USER01 REMAP_SCHEMA=USER01:TEST01 # 表导入(表已存在时追加数据) dimp USERID=... FILE=table_20260811.dmp TABLES=SYSDBA.FACT_ORDER IGNORE=Y

3.3 使用说明

  1. REMAP_SCHEMA=源:目标 用于模式改名导入,IGNORE=Y 用于表已存在时追加数据;
  2. 导出日志中记录的对象及行数统计,可与源库 SELECT COUNT(*) 结果对比,用于校验导出完整性;

4. 联机物理备份

4.1 启用归档模式

联机备份的前提是启用归档模式,操作步骤如下:

  1. 检查归档状态:执行 SELECT * FROM V$DM_ARCH_INI; 与 SELECT ARCH_MODE FROM V$ARCH_STATUS;,确认当前归档配置与状态。

  2. 配置归档参数:在 dm.ini 中设置 ARCH_INI=1,并在 dmarch.ini 中配置以下参数:

    [ARCHIVE_LOCAL1] ARCH_TYPE = LOCAL ARCH_DEST = /dmdata/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 0 --建议为硬盘空间的10%,0代表无限制
  3. 联机切换归档模式:在 DIsql 中执行以下语句:

    ALTER DATABASE MOUNT; ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmdata/arch, TYPE = local'; ALTER DATABASE ARCHIVELOG; -- 开启归档模式(NOARCHIVELOG 关闭) ALTER DATABASE OPEN;
  4. 验证归档状态:执行 SELECT ARCH_MODE FROM V$ARCH_STATUS;,输出应为 ARCHIVE。

4.2 全量备份执行

数据库处于 OPEN 状态时,在 DIsql 中执行完全备份:

BACKUP DATABASE FULL BACKUPSET '/dmdata/backup/full/db_full_bak_01' BACKUPINFO '2026-08-09 全量备份' COMPRESSED LEVEL 5 PARALLEL 8 MAXPIECESIZE 2048;

常用选项说明:COMPRESSED LEVEL n 指定压缩级别(0~9);PARALLEL n 指定并行度;MAXPIECESIZE n 指定单个备份片的大小上限。

4.3 备份集校验

RMAN> CHECK BACKUPSET '/dmdata/backup/full/db_full_bak_01' LEVEL 2;
RMAN> SHOW BACKUPSET '/dmdata/backup/full/db_full_bak_01' INFO DB,META,FILE;

CHECK 校验分为三级:LEVEL 1 校验备份包 CRC;LEVEL 2 校验数据页 CRC;LEVEL 3 执行数据页解密校验。

5. 增量备份与归档日志管理

5.1 增量备份执行

-- 差异增量备份(缺省方式):以最近一次备份为基 BACKUP DATABASE INCREMENT WITH BACKUPDIR '/dmdata/backup/full' BACKUPSET '/dmdata/backup/incr/INCR_20260811_020000'; -- 累积增量备份:仅以完全备份为基 BACKUP DATABASE INCREMENT CUMULATIVE WITH BACKUPDIR '/dmdata/backup/full' BACKUPSET '/dmdata/backup/incr/CUMU_20260811_020000';

当基备份不在默认搜索目录时,必须通过 WITH BACKUPDIR 或 BASE ON BACKUPSET 显式指定。

5.2 增量备份恢复

增量备份恢复遵循"还原 → 恢复 → 更新魔数"三个步骤:

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      FROM BACKUPSET '/dmdata/backup/incr/INCR_20260811_020000'
      WITH BACKUPDIR '/dmdata/backup/full';
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      FROM BACKUPSET '/dmdata/backup/incr/INCR_20260811_020000'
      WITH BACKUPDIR '/dmdata/backup/full';
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

恢复完成后需验证:数据库正常启动并成功 OPEN;核心表行数与恢复前一致;通过 SELECT DB_MAGIC FROM V$RLOG; 确认 DB_MAGIC 已更新。

5.3 归档日志生命周期管理

归档日志遵循"先备份、后清理"的管理原则:

  1. 在线归档保留 7 天,达到 ARCH_SPACE_LIMIT 设置的空间上限后,系统自动删除最老的归档日志;

  2. 每 2 小时执行一次归档日志备份,备份集保留 30 天:

    BACKUP ARCHIVE LOG ALL BACKUPSET '/dmdata/backup/arch/ARCH_20260811_060000';
  3. 归档备份校验通过后再执行清理,避免未备份即清理造成恢复断档:

    RMAN> REMOVE ARCHIVELOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
          UNTIL TIME '2026-08-04 00:00:00';
    

归档日志必须保持连续:相邻归档文件的 LSN 应首尾衔接、无缺口,否则将无法恢复到目标时间点。

6. 时间点恢复(PITR)

6.1 应用场景

时间点恢复(Point-In-Time Recovery)用于处理误操作导致的数据丢失。

6.2 恢复流程

时间点恢复在数据库脱机状态下执行,流程如下:

-- (1)还原数据文件
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      FROM BACKUPSET '/dmdata/backup/full/FULL_20260809_020000';

-- (2)重做归档日志至指定时间点(也可使用 UNTIL LSN 50857)
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      WITH ARCHIVEDIR '/dmdata/arch' UNTIL TIME '2026-08-15 10:45:00';

-- (3)更新数据库魔数并启动
RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

6.3 恢复验证

恢复完成后需验证:误删数据已恢复;测试标记数据存在;业务功能回归测试通过;恢复后观察 24 小时无异常告警与日志。

7. 异机恢复

异机恢复指将生产环境备份恢复到另一台服务器(如测试环境),流程为:备份集传输 → RESTORE 还原 → RECOVER 恢复 → UPDATE DB_MAGIC 更新魔数。

还原指令:

RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      FROM BACKUPSET '/dmdata/backup/full/FULL_20260809_020000';

RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'
      FROM BACKUPSET '/dmdata/backup/full/FULL_20260809_020000';

RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;

8. 备份安全加固

8.1 备份集加密

生产环境推荐采用国密 SM4 算法进行完全加密:

BACKUP DATABASE BACKUPSET '/dmdata/backup/full/db_full_bak_enc' IDENTIFIED BY "Prod_Bak_2026!" WITH ENCRYPTION 2 ENCRYPT WITH OPENSSL_SM4_CBC;

加密类型取值:0 为不加密;1 为简单加密(仅设置口令,内容仍以明文存储,为缺省值);2 为完全数据加密(内容以密文存储,推荐使用)。

加密注意事项:

  1. 增量备份的加密方式(密码、类型、算法)必须与基备份保持一致;
  2. 还原时必须提供与备份时一致的密码与算法。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服