注册
达梦数据库联机备份与脱机备份的区别及备份管理
技术分享/ 文章详情 /

达梦数据库联机备份与脱机备份的区别及备份管理

何处惹尘埃 2026/07/31 200 0 0

联机备份与脱机备份的区别是什么?
提高备份效率的参数?
怎么检查备份文件是联机备份还是脱机备份?
怎么检查备份文件是否完整,备份文件存储了哪些信息?
使用dmap进程的备份和不使用dmap进程的备份区别。dmap和dmap_br区别?

一、环境信息

  • 实例:TESTDB(端口 5239)
  • 数据目录:/home/dmdba/dmdata/test/TESTDB
  • 备份目录:/home/dmdba/backup
  • 归档已开启(ARCH_MODE=Y
  • 数据库状态:OPEN(联机备份)、MOUNT/关闭(脱机备份)

二、联机备份与脱机备份的概念区别

对比项 联机备份(热备份) 脱机备份(冷备份)
数据库状态 OPEN(正常运行) MOUNT关闭(服务停止)
是否需要归档 必须配置并开启归档 可选(正常退出可不配置)
使用工具 DIsql(推荐) DMRMAN(关闭状态)/ DIsql(MOUNT 状态)
是否影响业务 可在线进行,影响较小 数据库不可用,需停机
支持范围 库级、表空间级、表级、归档备份 库级、归档备份
适用场景 7×24 生产环境定期备份 维护窗口、测试环境、异常退出后备份

三、实操过程

3.1 检查归档和数据库状态

命令

disql SYSDBA/Dameng123@localhost:5239 -e "SELECT ARCH_MODE, STATUS\$ FROM V\$DATABASE;"

输出

ARCH_MODE STATUS$    
--------- -----------
Y         4
  • ARCH_MODE=Y:归档已开启,联机备份的必要条件
  • STATUS$=4:数据库处于 OPEN 状态,可执行联机备份

3.2 联机备份实操(数据库 OPEN 状态)

在 disql 中执行(注意:dmrman 不支持联机备份,会报错 [-137]:服务器正在运行):

disql SYSDBA/Dameng123@localhost:5239 SQL> BACKUP DATABASE FULL BACKUPSET '/home/dmdba/backup/online_full_bak_new';

遇到的问题及解决

  • 第一次执行报错 [-8055]:备份目录冲突,因为备份目录已存在
  • 解决:使用新目录名 online_full_bak_new,或删除旧目录后重试

重要:达梦的备份目录不能重复使用。每次执行备份时,备份集目录必须为空目录。如果目录已存在且不为空,就会触发 [-8055]: 备份目录冲突 错误。建议按日期或备份类型规划不同的目录名。

备份成功后的文件

ls -lh /home/dmdba/backup/online_full_bak_new/
total 94M
-rw-r--r-- 1 dmdba dinstall 101K Jul 29 09:02 online_full_bak_new_1.bak
-rw-r--r-- 1 dmdba dinstall  94M Jul 29 09:02 online_full_bak_new.bak
-rw-r--r-- 1 dmdba dinstall 130K Jul 29 09:02 online_full_bak_new.meta

3.3 脱机备份实操(数据库关闭状态)

步骤1:停止实例

ps -ef | grep dmserver | grep 5239 | awk '{print $2}' | xargs kill -9 # 或使用 pkill pkill -f "dmserver.*5239"

步骤2:在 dmrman 中执行脱机备份

dmrman RMAN> BACKUP DATABASE '/home/dmdba/dmdata/test/TESTDB/dm.ini' FULL BACKUPSET '/home/dmdba/backup/offline_full_bak_new';

输出(成功)

Processing backupset /home/dmdba/backup/offline_full_bak_new
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:04][Remaining:00:00:00]
backup successfully!

步骤3:启动实例

nohup /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdata/test/TESTDB/dm.ini > /home/dmdba/dmdata/test/dm.log 2>&1 &

3.4 如何检查备份文件是联机备份还是脱机备份

方法一:使用 SHOW BACKUPSET 查看元数据(完整输出)

联机备份的元数据输出:

RMAN> SHOW BACKUPSET '/home/dmdba/backup/online_full_bak_new';
<backupset [DEVICE TYPE:DISK, BACKUP_PATH: /home/dmdba/backup/online_full_bak_new] info start ..........>

<DB INFO>
system path:		/home/dmdba/dmdata/test/TESTDB
pmnt_magic:		1092233946
src_db_magic:		41884358
db_magic:		41884358
dsc node:		1
sys mode:		0
page check:		3
rlog encrypt:		0
rlog encrypt id:	0
external cipher id:	0
external hash id:	0
length in char:		0
use new hash:		1
page size:		8KB
extent size:		16
case sensitive:		1
log page size:		512B
charset:		0
data version:		0x7000D
sys version:		V8
version:		03134284604-20260707-335949-20228
pseg version:		0x7000C
enable policy:		0
archive flag:		1
blank_pad_mode:		0
crc_check:		TRUE
page_enc_slice_size:	4096
char_fix_storage:	0
sql_log_forbid:		0
secur_flag:		2
db_enc_extend_size:	0
page_check_hash_size:	0
dpc_magic:		0
bak_safe_check:		7
page_chksum_policy:	1
lockid_mode:		1

<META INFO>
backupset sig:		BA
backupset version:	V8.10.15.2
database name:		TESTDB
backup name:		DB_TESTDB_FULL_20260729_090158_242383
backupset description:	
bakset_magic:		1467722034
parent_bakset_magic:	4294967295
bakset_seqno:		0
meta file size:		132608
compressed level:	0
encrypt type:		0
parallel num:		1
backup range:		database
mpp_timestamp:		1785286918
with_huge:		TRUE
backupset_type:		NORMAL
mpp_flag:		FALSE
backup level:		online          ← 标识为联机备份
backup type:		full
without log:		FALSE
without mirror:		FALSE
use_bct:		FALSE
end_lsn:		4034163
max_trxid:		3629117
base begin_lsn:		-1
base end_lsn:		-1
base_bakset_magic:	4294967295
from lsn:		0
base name:		
base backupset:		
backup time:		2026-07-29 09:02:03
min exec ver:		0x08010227
min dct ver:		4
pkg size:		8388608
bak_magic:		0
l_term_id:		0
term_id:		0
c_seqno:		4220
c_lsn:			4034163
h_seqno:		4220
h_lsn:			4034163

<EP INFO>
EP[0]:
begin_pkg_seq:		4197
begin_lsn:		4034109
end_pkg_seq:		4220
end_lsn:		4034163

<FILE INFO>
backupset directory:	/home/dmdba/backup/online_full_bak_new
backupset piece:	2
data file:		4
huge file:		0
image copy file:	0

<backup_piece_list>
$file_seq |$size     |$pos_desc                                               |$content_type
0         |95977     |online_full_bak_new.bak                                 |DATA      
1         |101       |online_full_bak_new_1.bak                               |LOG       

<data_file_list>
$file_seq |$group_id |$group_name     |$file_id  |$file_len           |$copy_num |$size_flag|$asm_mirror |$asm_striping
1         |0         |SYSTEM          |0         |234881024           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/SYSTEM.DBF

2         |1         |ROLL            |0         |134217728           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/ROLL.DBF

3         |4         |MAIN            |0         |134217728           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/MAIN.DBF

4         |5         |TEST_TS         |0         |33554432            |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/TEST_TS01.DBF

<archive_file_list>
$file_seq |$dsc_seq |$file_len           |$begin_seqno        |$begin_lsn          |$end_seqno          |$end_lsn            
5         |0        |98304               |4197                |4034109             |4220                |4034163             	$file_path: 

<TABLESPACE INFO>
<tablespace_list>
$ts_id    |$name     |$state    |$cache    |$copy_num |$size_flag|$cipher_name |$opt_node 
0         |SYSTEM    |0         |          |0         |0         |             |65535
1         |ROLL      |0         |          |0         |0         |             |65535
4         |MAIN      |0         |          |0         |0         |             |65535
5         |TEST_TS   |0         |NORMAL    |0         |0         |             |65535

<backupset [DEVICE TYPE:DISK, BACKUP_PATH: /home/dmdba/backup/online_full_bak_new] info end .>
show backupsets successfully.

脱机备份的元数据输出:

RMAN> SHOW BACKUPSET '/home/dmdba/backup/offline_full_bak_new';
<backupset [DEVICE TYPE:DISK, BACKUP_PATH: /home/dmdba/backup/offline_full_bak_new] info start ..........>

<DB INFO>
system path:		/home/dmdba/dmdata/test/TESTDB
pmnt_magic:		1092233946
src_db_magic:		41884358
db_magic:		41884358
dsc node:		1
sys mode:		0
page check:		3
rlog encrypt:		0
rlog encrypt id:	0
external cipher id:	0
external hash id:	0
length in char:		0
use new hash:		1
page size:		8KB
extent size:		16
case sensitive:		1
log page size:		512B
charset:		0
data version:		0x7000D
sys version:		V8
version:		03134284604-20260707-335949-20228
pseg version:		0x7000C
enable policy:		0
archive flag:		1
blank_pad_mode:		0
crc_check:		TRUE
page_enc_slice_size:	4096
char_fix_storage:	0
sql_log_forbid:		0
secur_flag:		2
db_enc_extend_size:	0
page_check_hash_size:	0
dpc_magic:		0
bak_safe_check:		7
page_chksum_policy:	1
lockid_mode:		1

<META INFO>
backupset sig:		BA
backupset version:	V8.10.15.2
database name:		TESTDB
backup name:		DB_TESTDB_FULL_20260729_090537_000664
backupset description:	
bakset_magic:		265788528
parent_bakset_magic:	4294967295
bakset_seqno:		0
meta file size:		132608
compressed level:	0
encrypt type:		0
parallel num:		1
backup range:		database
mpp_timestamp:		1785287136
with_huge:		TRUE
backupset_type:		NORMAL
mpp_flag:		FALSE
backup level:		offline         ← 标识为脱机备份
backup type:		full
without log:		FALSE
without mirror:		FALSE
use_bct:		FALSE
end_lsn:		4034172
max_trxid:		3629117
base begin_lsn:		-1
base end_lsn:		-1
base_bakset_magic:	4294967295
from lsn:		0
base name:		
base backupset:		
backup time:		2026-07-29 09:05:41
min exec ver:		0x08010227
min dct ver:		4
pkg size:		8388608
bak_magic:		0
l_term_id:		0
term_id:		0
c_seqno:		4224
c_lsn:			4034172
h_seqno:		4224
h_lsn:			4034172

<EP INFO>
EP[0]:
begin_pkg_seq:		4203
begin_lsn:		4034123
end_pkg_seq:		4224
end_lsn:		4034172

<FILE INFO>
backupset directory:	/home/dmdba/backup/offline_full_bak_new
backupset piece:	2
data file:		4
huge file:		0
image copy file:	0

<backup_piece_list>
$file_seq |$size     |$pos_desc                                               |$content_type
0         |95977     |offline_full_bak_new.bak                                |DATA      
1         |93        |offline_full_bak_new_1.bak                              |LOG       

<data_file_list>
$file_seq |$group_id |$group_name     |$file_id  |$file_len           |$copy_num |$size_flag|$asm_mirror |$asm_striping
1         |0         |SYSTEM          |0         |234881024           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/SYSTEM.DBF

2         |1         |ROLL            |0         |134217728           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/ROLL.DBF

3         |4         |MAIN            |0         |134217728           |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/MAIN.DBF

4         |5         |TEST_TS         |0         |33554432            |0         |0         |1           |0         
	$file_path: /home/dmdba/dmdata/test/TESTDB/TEST_TS01.DBF

<archive_file_list>
$file_seq |$dsc_seq |$file_len           |$begin_seqno        |$begin_lsn          |$end_seqno          |$end_lsn            
5         |0        |90112               |4203                |4034123             |4224                |4034172             	$file_path: 

<TABLESPACE INFO>
<tablespace_list>
$ts_id    |$name     |$state    |$cache    |$copy_num |$size_flag|$cipher_name |$opt_node 
0         |SYSTEM    |0         |          |0         |0         |             |65535
1         |ROLL      |0         |          |0         |0         |             |65535
4         |MAIN      |0         |          |0         |0         |             |65535
5         |TEST_TS   |0         |NORMAL    |0         |0         |             |65535

<backupset [DEVICE TYPE:DISK, BACKUP_PATH: /home/dmdba/backup/offline_full_bak_new] info end .>
show backupsets successfully.

关键区别标识

  • 联机备份:backup level: online
  • 脱机备份:backup level: offline

输出对比汇总

元数据项 联机备份值 脱机备份值
backup level online offline
backup time 2026-07-29 09:02:03 2026-07-29 09:05:41
end_lsn 4034163 4034172
c_seqno 4220 4224
归档文件大小 98304 字节 90112 字节

方法二:查看 .meta 文件

cat /home/dmdba/backup/online_full_bak_new/*.meta | grep -i "backup level" cat /home/dmdba/backup/offline_full_bak_new/*.meta | grep -i "backup level"

输出分别显示 onlineoffline

3.5 如何检查备份文件是否完整

使用 CHECK BACKUPSET 命令

dmrman RMAN> CHECK BACKUPSET '/home/dmdba/backup/online_full_bak_new'; RMAN> CHECK BACKUPSET '/home/dmdba/backup/offline_full_bak_new';

输出

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.

返回 successfully 表示备份文件完整可用。

3.6 备份文件存储了哪些信息

备份集目录包含以下文件:

文件类型 说明
.bak 文件 实际数据文件内容(压缩或未压缩),第一个 .bak 为主数据文件,_1.bak 为日志文件
.meta 文件 元数据(备份类型、时间、LSN、数据库信息、文件列表等)

.meta 文件包含的关键信息(通过 SHOW BACKUPSET 查看):

  • 数据库信息(版本、页大小、大小写敏感等)
  • 备份信息(备份名称、时间、类型、LSN 范围)
  • 数据文件列表(SYSTEM.DBF, ROLL.DBF, MAIN.DBF 等)
  • 表空间信息
  • 归档日志信息

3.7 使用 dmap 进程的备份和不使用的区别

检查 dmap 进程

ps -ef | grep dmap | grep -v grep

输出:

dmdba 1070 1 0 Jul27 ? 00:00:07 /home/dmdba/dmdbms/bin/dmap dmap_ini=/home/dmdba/dmdbms/bin/dmap.ini

dmap 服务已运行。

对比项 使用 dmap 不使用 dmap
并行备份 支持(通过 PARALLEL 参数) 单通道
备份集校验 自动校验 需手动 CHECK
远程备份 支持 不支持
资源占用 略高(额外进程) 较低

并行备份命令(需 dmap 运行):

dmrman RMAN> BACKUP DATABASE '/home/dmdba/dmdata/test/TESTDB/dm.ini' FULL BACKUPSET '/home/dmdba/backup/parallel_bak' PARALLEL 4;

3.8 dmap 和 dmap_br 的区别

对比项 dmap dmap_br
全称 DMAP(DM Auxiliary Plugin) DMAP Backup Recovery
功能范围 通用辅助插件服务(备份、恢复、日志归档等) 专注于备份恢复
使用场景 常规备份恢复操作 特定备份恢复场景
进程类型 系统服务进程 备份恢复专用进程

实际使用:常规备份恢复使用 dmap 即可满足需求,dmap_br 在需要更高备份性能或特定场景下使用。

四、如何提高备份效率

  1. 并行备份:使用 PARALLEL 参数增加通道数

    BACKUP DATABASE FULL BACKUPSET '/path/bak' PARALLEL 4;
  2. 备份片大小限制:使用 MAXPIECESIZE 参数

    BACKUP DATABASE FULL BACKUPSET '/path/bak' MAXPIECESIZE 2048;
  3. 增量备份策略:结合完全备份和增量备份

    # 完全备份 BACKUP DATABASE FULL BACKUPSET '/path/full_bak'; # 增量备份 BACKUP DATABASE INCREMENT BACKUPSET '/path/inc_bak' BASE ON BACKUPSET '/path/full_bak';
  4. 备份集压缩:在 dm.ini 中设置 BAK_USE_AP 参数选用合适的备份方式

五、常见错误及处理方法

错误 原因 解决方法
[-8055]:备份目录冲突 备份目录已存在 使用新目录名或删除旧目录。注意:达梦的备份目录不能重复使用
RMAN[-137]:服务器正在运行 在 OPEN 状态使用 dmrman 改用 disql 执行联机备份,或关闭实例后使用 dmrman
[-510]:系统处于MOUNT状态 在 MOUNT 状态使用 disql 备份 改用 dmrman(关闭实例)备份
[-2007]:语法分析出错 online 关键字位置错误或不需要 联机备份在 disql 中执行,不加关键字

六、完整命令清单

-- ========== 检查归档和状态 ========== disql SYSDBA/Dameng123@localhost:5239 -e "SELECT ARCH_MODE, STATUS\$ FROM V\$DATABASE;" -- ========== 联机备份(在 disql 中执行) ========== disql SYSDBA/Dameng123@localhost:5239 SQL> BACKUP DATABASE FULL BACKUPSET '/home/dmdba/backup/online_full_bak_new'; -- ========== 脱机备份(需关闭实例,在 dmrman 中执行) ========== # 关闭实例 pkill -f "dmserver.*5239" # 执行备份 dmrman RMAN> BACKUP DATABASE '/home/dmdba/dmdata/test/TESTDB/dm.ini' FULL BACKUPSET '/home/dmdba/backup/offline_full_bak_new'; # 启动实例 nohup /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdata/test/TESTDB/dm.ini > /home/dmdba/dmdata/test/dm.log 2>&1 & -- ========== 查看备份集信息 ========== dmrman RMAN> SHOW BACKUPSET '/home/dmdba/backup/online_full_bak_new'; RMAN> SHOW BACKUPSET '/home/dmdba/backup/offline_full_bak_new'; -- ========== 检查备份完整性 ========== RMAN> CHECK BACKUPSET '/home/dmdba/backup/online_full_bak_new'; RMAN> CHECK BACKUPSET '/home/dmdba/backup/offline_full_bak_new'; -- ========== 查看备份文件 ========== ls -lh /home/dmdba/backup/online_full_bak_new/ ls -lh /home/dmdba/backup/offline_full_bak_new/ cat /home/dmdba/backup/online_full_bak_new/*.meta | head -20 -- ========== 检查 dmap 进程 ========== ps -ef | grep dmap | grep -v grep -- ========== 并行备份(需 dmap 运行) ========== dmrman RMAN> BACKUP DATABASE '/home/dmdba/dmdata/test/TESTDB/dm.ini' FULL BACKUPSET '/home/dmdba/backup/parallel_bak' PARALLEL 4;

好的,我来把结尾部分改成直接回答这几个问题的形式。


七、问题回答

问题1:联机备份与脱机备份的区别是什么?

对比项 联机备份(热备份) 脱机备份(冷备份)
数据库状态 OPEN(正常运行) MOUNT 或关闭(服务停止)
是否需要归档 必须配置并开启归档 可选,正常退出可不配置
使用工具 DIsql(推荐) DMRMAN(关闭状态)
是否影响业务 可在线进行,影响较小 数据库不可用,需停机
支持范围 库级、表空间级、表级、归档备份 库级、归档备份
适用场景 7×24 生产环境定期备份 维护窗口、测试环境、异常退出后备份

实操结论

  • 联机备份在 disql 中执行:BACKUP DATABASE FULL BACKUPSET '/path/bak';
  • 脱机备份需先关闭实例,在 dmrman 中执行:BACKUP DATABASE '/path/dm.ini' FULL BACKUPSET '/path/bak';

问题2:提高备份效率的参数有哪些?

参数/方法 说明 示例
PARALLEL 增加并行通道数,提升备份速度 BACKUP DATABASE ... PARALLEL 4;
MAXPIECESIZE 限制单个备份片大小 BACKUP DATABASE ... MAXPIECESIZE 2048;
增量备份策略 完全备份 + 增量备份结合 每周全量,每天增量
BAK_USE_AP dm.ini 中设置备份方式 选用合适的备份方式
压缩级别 节省存储空间 dm.ini 中配置

实操结论PARALLEL 是最直接的效率提升参数,需配合 dmap 进程使用;增量备份可减少备份时间和存储空间。

问题3:怎么检查备份文件是联机备份还是脱机备份?

方法一:使用 SHOW BACKUPSET 查看元数据

dmrman RMAN> SHOW BACKUPSET '/home/dmdba/backup/online_full_bak_new';

在输出中找到关键字段 backup level

  • 联机备份:backup level: online
  • 脱机备份:backup level: offline

方法二:查看 .meta 文件

cat /path/to/backup/*.meta | grep -i "backup level"

实操结论SHOW BACKUPSET 是最可靠的方法,可直接查看完整元数据。

问题4:怎么检查备份文件是否完整?

使用 CHECK BACKUPSET 命令:

dmrman RMAN> CHECK BACKUPSET '/home/dmdba/backup/online_full_bak_new';

输出

[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.

返回 successfully 表示备份文件完整可用。如果文件损坏或不完整,会报错提示。

问题5:备份文件存储了哪些信息?

备份集目录包含以下文件:

文件类型 说明
.bak 文件 实际数据文件内容(压缩或未压缩),第一个为主数据文件,_1.bak 为日志文件
.meta 文件 元数据(备份类型、时间、LSN、数据库信息、文件列表等)

元数据包含的关键信息(通过 SHOW BACKUPSET 查看):

  • 数据库信息:版本、页大小、大小写敏感、字符集等
  • 备份信息:备份名称、时间、类型(full/increment)、备份级别(online/offline)
  • LSN 范围:begin_lsnend_lsn
  • 数据文件列表:SYSTEM.DBF、ROLL.DBF、MAIN.DBF 等
  • 表空间信息
  • 归档日志信息

实操结论.meta 文件是备份集的核心描述文件,所有备份信息都在其中记录。

问题6:使用 dmap 进程的备份和不使用 dmap 进程的备份区别?

对比项 使用 dmap 不使用 dmap
并行备份 支持(通过 PARALLEL 参数) 单通道
备份集校验 自动校验 需手动 CHECK
远程备份 支持 不支持
资源占用 略高(额外进程) 较低

检查 dmap 进程

ps -ef | grep dmap | grep -v grep

并行备份命令(需 dmap 运行):

dmrman RMAN> BACKUP DATABASE '/path/dm.ini' FULL BACKUPSET '/path/bak' PARALLEL 4;

实操结论:常规备份已默认使用 dmap,无需额外配置;大数据量备份建议使用 PARALLEL 参数提升效率。

问题7:dmap 和 dmap_br 的区别?

对比项 dmap dmap_br
全称 DMAP(DM Auxiliary Plugin) DMAP Backup Recovery
功能范围 通用辅助插件服务(备份、恢复、日志归档等) 专注于备份恢复
使用场景 常规备份恢复操作 特定备份恢复场景
进程类型 系统服务进程 备份恢复专用进程

实操结论:常规备份恢复使用 dmap 即可满足需求,dmap_br 在需要更高备份性能或特定场景下使用。

八、核心要点速记

  1. 联机备份 → disql,数据库 OPEN;脱机备份 → dmrman,数据库关闭
  2. SHOW BACKUPSET 查看备份类型(backup level: online/offline
  3. CHECK BACKUPSET 检查备份完整性
  4. 备份目录不能重复使用,每次备份需新的空目录
  5. PARALLEL 参数可提升备份效率(需 dmap 运行)
  6. dmap 是通用辅助服务,dmap_br 是备份恢复专用进程
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服