注册
备份达梦数据库服务报[-7169]:bakres与DMAP消息通信失败.
专栏/培训园地/ 文章详情 /

备份达梦数据库服务报[-7169]:bakres与DMAP消息通信失败.

爱吃鱼的猫 2024/03/13 1877 1 0
摘要

备份达梦数据库服务报[-7169]:bakres与DMAP消息通信失败

背景

  在某个项目中执行备份命令报bakres与DMAP消息通信失败。执行过程如下
image.png

问题分析

DMAP进程的含义

  DMAP 辅助进程方式,可支持第三方备份(指定 DEVICE TYPE 为 TAPE)。 DMAP插件执行,改造了备份还原任务子系统,允许指定并行度,大幅提升了备份还原的效率,特别是加密、压缩的处理效率。如果选择使用 DMAP 辅助进程,执行备份还原之前就必须启动DMAP 服务。

分析过程

  1. 查看数据库的参数EXTERNAL_AP_PORT(DMAP的监听端口,执行C外部函数或AP备份还原使用的AP的端口号),端口为4236(默认的)
[dmdba1@dm01 bin]$/home/dmdba1/dmdbms/bin SYSDBA/SYSDBA:5237 -e "select para_name,para_value from v\$dm_ini where para_name='EXTERNAL_AP_PORT'"

服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间: 5.051(毫秒)
disql V8

PARA_NAME        PARA_VALUE
---------------- ----------
EXTERNAL_AP_PORT 4236
  1. 查看dmap 进程存在,端口为4236。
[root@dm01 ~]# ps -ef | grep dmap
dmdba      1098      1  0 17:42 ?        00:00:00 /dm8/db/bin/dmap
root       6215   1757  0 18:30 pts/0    00:00:00 grep --color=auto dmap
[root@dm01 ~]# netstat -nltp | grep 1098
tcp6       0      0 :::4236                 :::*                    LISTEN      1098/dmap
  1. 对比数据库进程和dmap进程的家目录发现DM_HOME不一样,怀疑时数据库版本不一致导致的。查看数据库版本
[root@dm01 root]# ps -ef | grep dmserver dmdba 1113 1 0 14:49 ? 00:00:04 /dm8/db/bin/dmserver path=/dm8/db/data/DAMENG/dm.ini -noconsole dmdba1 10272 1 1 15:41 pts/0 00:00:03 /home/dmdba1/dmdbms/bin/dmserver /home/dmdba1/dmdbms/data/DAMENG/dm.ini -noconsole root 10442 1692 0 15:45 pts/0 00:00:00 grep --color=auto dmserver [root@dm01 root]# su - dmdba Last login: Mon Feb 19 15:45:55 CST 2024 on pts/0 [dmdba@dm01 ~]$ cd /dm8/db/bin/ [dmdba@dm01 bin]$ ./disql -h | grep version version: 05134284094-20231109-208042-20067 Pack10 [dmdba@dm01 bin]$ exit [root@dm01 root]# su - dmdba1 Last login: Mon Feb 19 15:41:13 CST 2024 on pts/0 [dmdba1@dm01 ~]$ cd dmdbms/bin [dmdba1@dm01 bin]$ ./disql -h | grep version [dmdba1@dm01 bin]$ ./disql SYSDBA/SYSDBA:5237 服务器[LOCALHOST:5237]:处于普通打开状态 登录使用时间: 6.228(毫秒) disql V8 SQL> select id_code; 行号 ID_CODE ---------- --------------------------- 1 1-1-87-20.06.01-122565-ENT 已用时间: 7.801(毫秒). 执行号:504. SQL>

4.版本汇总

DM_HOME 端口 版本
/dm8/db/bin/ DM_HOME5236 05134284094-20231109-208042-20067 Pack10
/home/dmdba1/dmdbms/bin 5237 1-1-87-20.06.01-122565-ENT

5.尝试使用对应版本的dmap服务进行备份,发现dmap 服务不存在,为了不影响其他数据库版本的dmap服务的正常运行,需要修改dmap的默认端口,并手工启动dmap服务。
注意事项:不要使用DM_HOME/bin 下的DmAPService 进行启动,可能会报端口冲突
1) 编辑dmap的配置文件,指定端口号为4237(注意端口冲突)
image.png
2)启动dmap进程
image.png
3)方法1:修改数据库EXTERNAL_AP_PORT参数为5237,再次发起备份。备份成功
image.png
5)方法2:禁止使用dmap 进程进行备份,停止dmap进程,修改BAK_USE_AP参数,并发起备份
image.png

分析总结

  数据库备份失败的原因时,在备份数据库的时候默认使用dmap辅助进程,并且dmap的版本和数据库版本不一致导致。
  解决方式有二种:1.禁止使用dmap辅助进程;2启动与数据库相同版本的dmap辅助进程进行备份。

知识扩展

恢复数据库

  在备份的使用dmap辅助进程,在恢复的时候也需要使用dmap 辅助进程;在备份的时候不使用dmap辅助进程,在恢复的时候也不需要dmap 辅助进程。

使用dmap非默认端口恢复数据库

dmrman 命令支持指定ap_port 进行恢复,在恢复的时候使用此参数恢复即可;

[dmdba1@dm01 bin]$ ./DmServiceDAMENG1  stop
Stopping DmServiceDAMENG1:                                 [ OK ]
[dmdba1@dm01 bin]$ ./dmrman ap_port=4237
dmrman V8
RMAN> RESTORE DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796'
RESTORE DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796'
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
RESTORE DATABASE,data collect......
RESTORE DATABASE,database refresh ......
RESTORE BACKUPSET [/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796] START......
total 0 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
CMD END.CODE:[0]
restore successfully.
time used: 562.944(ms)
RMAN> recover DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796'
recover DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796'
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[38551]
RESTORE RLOG CHECK......
RESTORE RLOG, gen tmp file......
RESTORE RLOG FROM BACKUPSET [/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240219_163311_246796] START......
CMD END.CODE:[0]
EP:0 total 1 pkgs applied, percent: 50%
EP:0 total 2 pkgs applied, percent: 100%
Recover from archive log finished, time used:0.004s.
recover successfully!
time used: 253.802(ms)
RMAN> recover DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
recover DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[38556]
EP[0]'s apply_lsn[38556] >= end_lsn[38556]
recover successfully!
time used: 981.022(ms)
RMAN> exit
time used: 0.002(ms)
[dmdba1@dm01 bin]$ ./DmServiceDAMENG1  start
Starting DmServiceDAMENG1:                                 [ OK ]
[dmdba1@dm01 bin]$ /dm8/db/bin/disql SYSDBA/SYSDBA:5237

服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间: 3.533(毫秒)
disql V8
SQL>

不使用dmap恢复数据库

[dmdba1@dm01 bin]$ ./DmServiceDAMENG1 stop
Stopping DmServiceDAMENG1:                                 [ OK ]
DmServiceDAMENG1 service is stopped.
[dmdba1@dm01 bin]$ ./dmrman USE_AP=2
dmrman V8
RMAN> RESTORE DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688';
RESTORE DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688';
file dm.key not found, use default license!
RESTORE DATABASE CHECK......
RESTORE DATABASE,data collect......
RESTORE DATABASE,database refresh ......
RESTORE BACKUPSET [/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688] START......
total 0 packages processed...
RESTORE DATABASE,UPDATE ctl file......
RESTORE DATABASE,REBUILD key file......
RESTORE DATABASE,CHECK db info......
RESTORE DATABASE,UPDATE db info......
total 8 packages processed!
CMD END.CODE:[0]
restore successfully.
time used: 769.669(ms)
RMAN> RECOVER DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688';
RECOVER DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688';
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[49352]
RESTORE RLOG CHECK......
RESTORE RLOG, gen tmp file......
RESTORE RLOG FROM BACKUPSET [/home/dmdba1/dmdbms/data/DAMENG/bak/DB_DAMENG_FULL_20240223_141209_105688] START......
total 2 packages processed!
CMD END.CODE:[0]
EP:0 total 1 pkgs applied, percent: 33%
EP:0 total 2 pkgs applied, percent: 66%
EP:0 total 3 pkgs applied, percent: 100%
Recover from archive log finished, time used:0.003s.
recover successfully!
time used: 228.358(ms)
RMAN> RECOVER DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
RECOVER DATABASE '/home/dmdba1/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;
Database mode = 0, oguid = 0
EP[0]'s cur_lsn[49356]
EP[0]'s apply_lsn[49356] >= end_lsn[49356]
recover successfully!
time used: 977.312(ms)
RMAN>
RMAN> EXIT
time used: 0.003(ms)
[dmdba1@dm01 bin]$ ./DmServiceDAMENG1 start
Starting DmServiceDAMENG1:                                 [ OK ]
[dmdba1@dm01 bin]$ ./disql  SYSDBA/SYSDBA:5237

服务器[LOCALHOST:5237]:处于普通打开状态
登录使用时间: 5.916(毫秒)
disql V8
SQL> exit

什么场景下使用DMAP辅助进程进行备份

  • 在数据量比较大的数据库,且备份磁盘性能比较好的情况下,需要开启并行备份的场景。
  • 对备份集安全性有要求需要用到加密备份的成绩
  • 需要备份到磁带或者其他第三方存储的采用数据流方式传输的场景。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服