联机备份与脱机备份的区别是什么?
提高备份效率的参数?
怎么检查备份文件是联机备份还是脱机备份?
怎么检查备份文件是否完整,备份文件存储了哪些信息?
使用dmap进程的备份和不使用dmap进程的备份区别。dmap和dmap_br区别?
/home/dmdba/dmdata/test/TESTDB/home/dmdba/backupARCH_MODE=Y)| 对比项 | 联机备份(热备份) | 脱机备份(冷备份) |
|---|---|---|
| 数据库状态 | OPEN(正常运行) | MOUNT 或 关闭(服务停止) |
| 是否需要归档 | 必须配置并开启归档 | 可选(正常退出可不配置) |
| 使用工具 | DIsql(推荐) | DMRMAN(关闭状态)/ DIsql(MOUNT 状态) |
| 是否影响业务 | 可在线进行,影响较小 | 数据库不可用,需停机 |
| 支持范围 | 库级、表空间级、表级、归档备份 | 库级、归档备份 |
| 适用场景 | 7×24 生产环境定期备份 | 维护窗口、测试环境、异常退出后备份 |
命令:
disql SYSDBA/Dameng123@localhost:5239 -e "SELECT ARCH_MODE, STATUS\$ FROM V\$DATABASE;"
输出:
ARCH_MODE STATUS$
--------- -----------
Y 4
ARCH_MODE=Y:归档已开启,联机备份的必要条件STATUS$=4:数据库处于 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
步骤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 &
方法一:使用 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: onlinebackup 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"
输出分别显示 online 和 offline。
使用 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 表示备份文件完整可用。
备份集目录包含以下文件:
| 文件类型 | 说明 |
|---|---|
.bak 文件 |
实际数据文件内容(压缩或未压缩),第一个 .bak 为主数据文件,_1.bak 为日志文件 |
.meta 文件 |
元数据(备份类型、时间、LSN、数据库信息、文件列表等) |
.meta 文件包含的关键信息(通过 SHOW BACKUPSET 查看):
检查 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;
| 对比项 | dmap | dmap_br |
|---|---|---|
| 全称 | DMAP(DM Auxiliary Plugin) | DMAP Backup Recovery |
| 功能范围 | 通用辅助插件服务(备份、恢复、日志归档等) | 专注于备份恢复 |
| 使用场景 | 常规备份恢复操作 | 特定备份恢复场景 |
| 进程类型 | 系统服务进程 | 备份恢复专用进程 |
实际使用:常规备份恢复使用 dmap 即可满足需求,dmap_br 在需要更高备份性能或特定场景下使用。
并行备份:使用 PARALLEL 参数增加通道数
BACKUP DATABASE FULL BACKUPSET '/path/bak' PARALLEL 4;
备份片大小限制:使用 MAXPIECESIZE 参数
BACKUP DATABASE FULL BACKUPSET '/path/bak' MAXPIECESIZE 2048;
增量备份策略:结合完全备份和增量备份
# 完全备份
BACKUP DATABASE FULL BACKUPSET '/path/full_bak';
# 增量备份
BACKUP DATABASE INCREMENT BACKUPSET '/path/inc_bak' BASE ON BACKUPSET '/path/full_bak';
备份集压缩:在 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;
好的,我来把结尾部分改成直接回答这几个问题的形式。
| 对比项 | 联机备份(热备份) | 脱机备份(冷备份) |
|---|---|---|
| 数据库状态 | OPEN(正常运行) | MOUNT 或关闭(服务停止) |
| 是否需要归档 | 必须配置并开启归档 | 可选,正常退出可不配置 |
| 使用工具 | DIsql(推荐) | DMRMAN(关闭状态) |
| 是否影响业务 | 可在线进行,影响较小 | 数据库不可用,需停机 |
| 支持范围 | 库级、表空间级、表级、归档备份 | 库级、归档备份 |
| 适用场景 | 7×24 生产环境定期备份 | 维护窗口、测试环境、异常退出后备份 |
实操结论:
disql 中执行:BACKUP DATABASE FULL BACKUPSET '/path/bak';dmrman 中执行:BACKUP DATABASE '/path/dm.ini' FULL BACKUPSET '/path/bak';| 参数/方法 | 说明 | 示例 |
|---|---|---|
PARALLEL |
增加并行通道数,提升备份速度 | BACKUP DATABASE ... PARALLEL 4; |
MAXPIECESIZE |
限制单个备份片大小 | BACKUP DATABASE ... MAXPIECESIZE 2048; |
| 增量备份策略 | 完全备份 + 增量备份结合 | 每周全量,每天增量 |
BAK_USE_AP |
dm.ini 中设置备份方式 |
选用合适的备份方式 |
| 压缩级别 | 节省存储空间 | 在 dm.ini 中配置 |
实操结论:PARALLEL 是最直接的效率提升参数,需配合 dmap 进程使用;增量备份可减少备份时间和存储空间。
方法一:使用 SHOW BACKUPSET 查看元数据
dmrman
RMAN> SHOW BACKUPSET '/home/dmdba/backup/online_full_bak_new';
在输出中找到关键字段 backup level:
backup level: onlinebackup level: offline方法二:查看 .meta 文件
cat /path/to/backup/*.meta | grep -i "backup level"
实操结论:SHOW BACKUPSET 是最可靠的方法,可直接查看完整元数据。
使用 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 表示备份文件完整可用。如果文件损坏或不完整,会报错提示。
备份集目录包含以下文件:
| 文件类型 | 说明 |
|---|---|
.bak 文件 |
实际数据文件内容(压缩或未压缩),第一个为主数据文件,_1.bak 为日志文件 |
.meta 文件 |
元数据(备份类型、时间、LSN、数据库信息、文件列表等) |
元数据包含的关键信息(通过 SHOW BACKUPSET 查看):
begin_lsn、end_lsn实操结论:.meta 文件是备份集的核心描述文件,所有备份信息都在其中记录。
| 对比项 | 使用 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 参数提升效率。
| 对比项 | dmap | dmap_br |
|---|---|---|
| 全称 | DMAP(DM Auxiliary Plugin) | DMAP Backup Recovery |
| 功能范围 | 通用辅助插件服务(备份、恢复、日志归档等) | 专注于备份恢复 |
| 使用场景 | 常规备份恢复操作 | 特定备份恢复场景 |
| 进程类型 | 系统服务进程 | 备份恢复专用进程 |
实操结论:常规备份恢复使用 dmap 即可满足需求,dmap_br 在需要更高备份性能或特定场景下使用。
backup level: online/offline)文章
阅读量
获赞
