注册
关于达梦数据库备份应该选择那种方式?
专栏/技术分享/ 文章详情 /

关于达梦数据库备份应该选择那种方式?

Eric 2025/07/18 332 0 0
摘要

前言

数据库备份与还原的核心意义在于:通过 “未雨绸缪” 的备份策略,为数据构建多道安全防线;通过 “快速响应” 的还原能力,在风险发生时将损失降到最低。它不仅是技术层面的数据保护手段,更是企业业务连续性规划、合规管理和风险管理的核心组成部分。对于达梦数据库这类国产数据库而言,结合其自身的备份工具(如dmrman)和特性(如联机备份、增量备份),制定合理的备份与还原策略,能进一步提升数据安全保障能力。

1 考虑因素

在达梦数据库(DM Database)中选择合适的备份策略需综合考虑业务需求、恢复目标、数据量、停机窗口、存储成本和技术能力。所以具体包含的两种方式物理备份、逻辑备份我们需要进行比对。

2 物理备份

原理:直接拷贝数据库的物理文件(数据文件、控制文件、重做日志、归档日志等),属于块级(Block-Level)复制,直接备份底层数据文件,不需要解析 SQL 语句和逻辑结构。
核心工具dmrman(命令行工具)、SQL语句、图形化管理工具(DEM)。

2.1 备份类型

类型 命令示例
全量备份 BACKUP DATABASE FULL TO ‘full_bak’; 备份整个数据库的所有数据文件
增量备份 BACKUP DATABASE INCREMENT WITH BACKUPDIR ‘full_bak’; 仅备份自上次备份后修改的数据块
表空间备份 BACKUP TABLESPACE MAIN TO ‘ts_bak’; 备份单个表空间(如MAIN、ROLL等)
归档备份 BACKUP ARCHIVELOG ALL; 备份所有归档日志(用于时间点恢复)

2.2 备份步骤

首先注意需要开启归档模式

# 1. 开启归档模式(必需!)
SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=1024';

# 2. 全量备份
dmrman CTLSTMT="BACKUP DATABASE FULL TO BACKUPSET '/bak/full_bak'";

# 3. 增量备份(基于全量)
dmrman CTLSTMT="BACKUP DATABASE INCREMENT BASE ON BACKUPSET '/bak/full_bak' TO INCR_BAK'";

# 4. 恢复数据库
# 前面的是你要在哪个数据库上恢复备份,后面的是之前备份的文件
dmrman CTLSTMT="RESTORE DATABASE '/dmdata/DAMENG/dm.ini' FROM BACKUPSET '/bak/full_bak'";
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmarch'";
dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG/dm.ini' UPDATE DB_MAGIC";

2.3 优势与局限

  • 优势:
    • 速度快(直接操作数据块)
    • 支持增量备份秒级时间点恢复(PITR)
    • 备份期间数据库可正常使用(热备份)
  • 局限:
    • 必须开启归档日志(增加存储开销)
    • 备份文件只能恢复到相同版本的达梦数据库
    • 跨操作系统恢复可能不兼容(如Linux备份→Windows恢复)

2.4 适用场景

生产核心系统、TB级大库、要求RTO分钟级恢复、容灾高可用架构。

3 逻辑备份

原理:将数据库对象(表、视图、存储过程)转换为SQL语句或数据格式,通过导出/导入工具实现备份。
核心工具dexp(逻辑导出)、dimp(逻辑导入)。

3.1 逻辑备份类型

导出级别 命令示例 说明
全库 dexp USERID=SYSDBA/DAMENG123 FULL=Y DIRECTORY=/bak 导出整个数据库
按用户 dexp USERID=SYSDBA/DAMENG123 OWNER=USER1 DIRECTORY=/bak 导出指定用户的所有对象
按表 dexp USERID=SYSDBA/DAMENG123 TABLES=EMP,DEPT DIRECTORY=/bak 导出指定表
按查询 dexp USERID=SYSDBA/DAMENG123 QUERY=‘WHERE sal>5000’ TABLES=EMP 按条件导出表数据

3.2 逻辑备份操作步骤

# 1. 全库导出(dexp)
dexp SYSDBA/DAMENG123@localhost:5236 FILE=full_exp.dmp LOG=exp.log FULL=Y

# 2. 单表导入(dimp)
dimp SYSDBA/DAMENG123@localhost:5236 FILE=full_exp.dmp LOG=imp.log TABLES=EMP

# 3. 跨平台迁移(示例:Linux→Windows)
dexp ...  # Linux导出
dimp ...  # Windows导入(无需修改文件格式)

3.3 优势与局限

  • 优势
    • 跨平台兼容(Linux/Windows/ARM互导)
    • 选择性恢复(可导入单表、单用户)
    • 数据格式透明(DMP文件可文本编辑查看)
    • 无需归档日志
  • 局限
    • 速度慢(逐行处理,大表导出耗时)
    • 导出时可能锁表(影响业务写入)
    • 不备份物理结构(如存储参数、索引物理存储)
    • 无法实现增量备份和时间点恢复

3.4 适用场景

开发测试环境数据迁移、小表快速恢复、跨平台迁移、数据格式转换(如Oracle→DM)。

4 物理备份 vs 逻辑备份

特性 物理备份 逻辑备份
备份内容 数据文件+日志+控制文件 SQL语句+表数据
速度 快(TB级小时完成) 慢(大表可能数小时)
恢复粒度 库/表空间/表 库/用户/表/行
跨平台恢复 不支持 支持
增量备份 * 支持* 不支持
时间点恢复 支持(需归档) 不支持
业务影响 热备份(零影响) 可能锁表(阻塞DML)
典型工具 dmrman, SQL dexp/dimp

5 如何选择

![image](file://E:\dameng\导师汇报\images\f0XkCHKs76OB_99kBMBaiCYaJo0AaoON–sfvAfyR5E.png?msec=1752491342000)

可以根据上述的决策树来进行选择,但具体的生产环境肯定还需要考虑多种因素。

所以对于在生产环境中可以使用:物理备份(全量+增量+归档) + 定期逻辑备份关键表

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服