一、问题背景
在实际环境中,我们有时需要在同一台服务器上运行两个不同版本的达梦数据库。这时会遇到一个常见问题:默认的 AP 服务(辅助进程)会占用 4236 端口,导致第二个 AP 服务无法启动,进而导致第二个数据库服务的定时备份作业报错:-134 执行码版本不匹配。解决思路很简单——为第二个数据库实例配置另一个的 AP 服务,并指定一个新的端口。下面是具体操作步骤。
二、问题解决
2.1 创建新的 dmap.ini 配置文件
在第二个数据库实例的数据目录下(例如 /data/dmdata/DAMENG/)新建 dmap.ini 文件,并设置一个未被占用的端口号,比如 4237。
# 文件路径:/data/dmdata/DAMENG/dmap.ini
AP_PORT = 4237
2.2 重新注册 AP 服务
使用达梦自带的脚本注册新的 AP 服务,并通过 -dmap_ini 参数明确指定刚才创建的配置文件。这样系统就会根据新端口来启动服务。
# 需要用 root 用户执行
/data/dmdbms/script/root/dm_service_installer.sh -t dmap -dmap_ini /data/dmdata/DAMENG/dmap.ini
2.3 修改数据库参数
登录到第二个数据库实例,执行以下 SQL 语句,将 EXTERNAL_AP_PORT 参数修改为刚才配置的端口 4237。这样数据库在需要进行备份等操作时,就会自动连接到新的 AP 服务。
SP_SET_PARA_VALUE(1, 'EXTERNAL_AP_PORT', 4237);
参数介绍:执行C外部函数或AP备份还原使用的AP的端口号,DMAP的监听端口,监听方配置此参数。
执行后参数立即生效,无需重启数据库。
三、验证与总结
完成上述三步后,第二个 AP 服务就会使用 4237 端口运行,与占用 4236 端口的第一个 AP 服务互不干扰。可以手动执行之前报错的定时作业验证是否可以成功备份。希望这篇小记能帮助遇到同样问题的朋友少走弯路。