本文于 12 天前发布,最后更新于 11 天前

一、问题背景

在实际环境中,我们有时需要在同一台服务器上运行两个不同版本的达梦数据库。这时会遇到一个常见问题:默认的 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 服务互不干扰。可以手动执行之前报错的定时作业验证是否可以成功备份。希望这篇小记能帮助遇到同样问题的朋友少走弯路。

|´・ω・)ノ

ヾ(≧∇≦*)ゝ

(☆ω☆)

(╯‵□′)╯︵┴─┴

 ̄﹃ ̄

(/ω\)

∠( ᐛ 」∠)_

(๑•̀ㅁ•́ฅ)

→_→

୧(๑•̀⌄•́๑)૭

٩(ˊᗜˋ*)و

(ノ°ο°)ノ

(´இ皿இ`)

⌇●﹏●⌇

(ฅ´ω`ฅ)

(╯°A°)╯︵○○○

φ( ̄∇ ̄o)

ヾ(´・ ・`。)ノ"

( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃

(ó﹏ò。)

Σ(っ °Д °;)っ

( ,,´・ω・)ノ"(´っω・`。)

╮(╯▽╰)╭

o(*////▽////*)q

>﹏<

( ๑´•ω•) "(ㆆᴗㆆ)

😂

😀

😅

😊

🙂

🙃

😌

😍

😘

😜

😝

😏

😒

🙄

😳

😡

😔

😫

😱

😭

💩

👻

🙌

🖕

👍

👫

👬

👭

🌚

🌝

🙈

💊

😶

🙏

🍦

🍉

😣

Source: github.com/k4yt3x/flowerhd

颜文字

Emoji

小恐龙

花!