达梦数据库备份详解

DM8数据库的备份主要分为物理备份和逻辑备份两大类,两者适用的场景和命令不同。

  • 物理备份:直接备份数据库的物理文件(如数据文件、日志文件等)。这种方式速度快,是保障数据安全最直接的手段,常用于全库级别的灾难恢复。

  • 逻辑备份:使用 dexp 工具将数据库对象(如表、视图、存储过程等)的结构和数据导出为一个独立的文件。这种方式非常灵活,可以指定备份库、用户、模式或表,常用于数据迁移或特定对象的备份。

物理备份命令

物理备份分为冷备(数据库关闭)和热备(数据库运行中)两种。其中,热备需要提前开启数据库的归档模式。

1. 冷备(数据库关闭)

冷备需要在数据库服务关闭的状态下进行,操作简单,不需要开启归档。

使用 dmrman 命令行工具
进入达梦数据库安装目录的 bin 文件夹,执行 dmrman 命令进入交互界面,然后执行备份命令

# 进入bin目录
cd /dm8/bin
# 执行dmrman
./dmrman

# 在RMAN交互界面中执行全量备份
RMAN> backup database '/dm8/data/DAMENG/dm.ini' full backupset '/dm8/backup/full_bak';

  • 参数说明

    • /dm8/data/DAMENG/dm.ini:数据库实例配置文件路径,请根据实际路径修改。

    • full:执行全量备份。

    • backupset:指定备份集存放的目录。

2. 热备(数据库运行中)

热备在数据库运行时进行,不影响业务,但必须确保数据库已开启归档模式

开启归档模式(SQL命令行)

在执行任何备份前,务必完成以下检查,否则备份可能失败或无法恢复。

-- 1. 将数据库切换至 Mount 状态
ALTER DATABASE MOUNT;
-- 2. 开启归档模式
ALTER DATABASE ARCHIVELOG;
-- 3. 添加本地归档目录(请替换 /dm8/arch 为实际路径,需要提前创建并授予 dmdba 用户读写权限。)
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dm8/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
-- 4. 切回 Open 状态
ALTER DATABASE OPEN;

-- 验证是否成功(返回 'Y' 表示成功)
SELECT ARCH_MODE FROM V$DATABASE;

  • DEST 指定归档日志存放路径,请确保目录已创建且有写入权限。

使用 SQL 命令备份
归档开启后,可以在 disql 命令行工具中直接执行备份命令。

# 1. 登录 disql
cd /dm8/bin
./disql SYSDBA/SYSDBA@localhost:5236

# 2. 执行全量备份(备份集存至 /dm8/backup/full)
SQL> BACKUP DATABASE FULL BACKUPSET '/dm8/backup/full' COMPRESSED LEVEL 6;
# 说明:COMPRESSED LEVEL 6 为中等压缩,可节省磁盘空间 [citation:9]

# 3. 执行增量备份(基于上次全量备份,备份变化的数据)
# 增量备份命令会自动找到最近的基准备份
SQL> BACKUP DATABASE INCREMENT BACKUPSET '/dm8/backup/inc_20250326';

逻辑备份命令 (dexp)

逻辑备份使用 dexp 工具,数据库必须处于运行状态。dexp 支持四种级别的备份。

备份级别参数说明命令示例
全库FULL=Y导出整个数据库的所有对象./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=full.dmp LOG=full.log FULL=Y
按用户OWNER=<用户名>导出一个或多个用户拥有的所有对象./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=owner.dmp LOG=owner.log OWNER=USER01
按模式SCHEMAS=<模式名>导出一个或多个模式下的所有对象./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=schema.dmp LOG=schema.log SCHEMAS=DMHR
按表TABLES=<表名>导出一张或多张指定的表./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup FILE=table.dmp LOG=table.log TABLES=DMHR.EMPLOYEE

通用命令格式与参数

./dexp USERID=<用户名>/<密码>@<IP>:<端口> DIRECTORY=<备份目录> FILE=<导出文件名> LOG=<日志文件名> <备份级别参数>

# 全库导出(一般用于迁移,生产环境频率较低)
./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup/logic FILE=full_db.dmp LOG=full_db.log FULL=Y

# 关键表定时导出(例如每天凌晨导出核心业务表)
./dexp SYSDBA/SYSDBA DIRECTORY=/dm8/backup/logic FILE=order_table.dmp LOG=order_table.log \
TABLES="PROD.ORDER_TABLE,PROD.ORDER_DETAIL"
  • USERID:连接数据库的认证信息,如果是本地数据库,@IP:端口 可以省略。

  • DIRECTORY:指定备份文件存放的目录。

  • FILE:指定导出的文件名。

  • LOG:指定记录导出过程的日志文件。

生产环境备份方案选型

生产环境的首要原则是不影响业务,因此首选联机备份(热备)。针对不同场景,方案选择如下:

方案类型适用场景核心要求恢复粒度操作复杂度
物理热备(推荐)全库恢复、表空间恢复必须开启归档日志 库级、表空间级中,支持脚本自动化
逻辑备份(辅助)误删数据恢复、数据迁移、部分表恢复数据库正常运行即可 库级、用户级、模式级、表级低,dexp/dimp命令简单
物理冷备(备用)数据库迁移、重大变更前的保险需停止数据库服务 库级低,但会中断业务

生产环境建议:以“每周一次物理全量热备 + 每天一次物理增量热备”为主,辅以“关键业务表每日逻辑导出”的双重保险策略 。

生产环境最佳实践建议

  1. 备份集有效性检查:定期使用 dmrman 中的 CHECK BACKUPSET 命令验证备份集是否损坏。

  2. 异地备份:生产环境的备份集务必通过脚本(如 rsyncscp)同步至另一台服务器或对象存储,防止物理硬件损坏。

  3. 关键参数配置

    • COMPRESSED:备份时开启压缩(级别5-6),显著节省磁盘空间 。

    • PARALLEL:多核服务器可设置并行度(如4或8),加快备份速度 。

  4. 保留周期:建议全量备份保留30天,归档日志保留7-15天(视磁盘空间而定)。

常见生产环境报错及处理

报错信息原因分析解决方案
数据库未开启归档模式执行热备前未配置归档参考“第二步”开启归档,并重启数据库服务生效 
DMAP服务未启动物理备份或还原时缺少辅助进程切换到 dmdba 用户,执行 DmAPService start
无效的备份集目录跨平台或跨版本还原确保操作系统位数和数据库大版本一致(Linux到Linux,x64到x64) 
表空间恢复失败尝试恢复系统表空间(如SYSTEM)系统表空间只能通过整库恢复来还原 

备份恢复是数据库运维的“生命线”,建议在生产环境实施前,先在测试环境完整演练一遍备份和恢复流程。


参考:DM达梦数据库登陆方式及日常运维命令


anzhihe 安志合个人博客,版权所有 丨 如未注明,均为原创 丨 转载请注明转自:https://chegva.com/6699.html | ☆★★每天进步一点点,加油!★★☆ | 

您可能还感兴趣的文章!

发表评论

电子邮件地址不会被公开。 必填项已用*标注