注册
达梦数据库之间外部链接配置
技术分享/ 文章详情 /

达梦数据库之间外部链接配置

ZCH 2023/06/16 5758 2 0

1 DM与DM间外部链接说明

要创建到 DM 数据库的外部链接,支持开启MAL、无需开启MAL(DPI方式)以及ODBC方式,对于DM自身数据库间的链接建议就用自身协议,不要再通过ODBC,
对于开启MAL方式,必须先配置 dmmal.ini,才能使用 LINK,DM 的连接串有两种格式:
1、INSTANCE_NAME:直接使用远程库的实例名(该实例名必须配置到 dmmal.ini 中);
2、<IP 地址 >/< 端口号 >:其中端口号为 DM 外部链接服务器的 dmmal.ini 配置中的 MAL_PORT 端口号。
dmmal.ini 的详细配置可参考《DM8 系统管理员手册》,需要注意同时将 dm.ini 中的 MAL_INI 参数置为 1 以开启 MAL 系统。
以下为创建外部链接过程案例。

2 配置DM到DM外部链接

2.1 环境说明

源 数据 库:DM8,IP:192.168.228.228
目标数据库:DM8,IP:192.168.228.31

2.2 开启MAL方式

源和目标数据库需要配置开启MAL系统
$ cd /home/dmdba/dmdbms/data/DAMENG
$ vi dm.ini
MAL_INI = 1

源和目标数据库的实例名一样,配置在同一个dmmal.ini配置文件中,会导致数据库无法启动,异常日志如:MAL_INST_NAME:[DMSERVER] is duplicated in [/home/dmdba/dmdbms/data/DAMENG/dmmal.ini]!
针对这个问题,以下分两个场景配置。

2.2.1 场景一:源和目标数据库实例名称不一样

本场景中,源和目标数据库dmmal.ini配置一样:
$ cd /home/dmdba/dmdbms/data/DAMENG
$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER1 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER2 #实例名,和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

2.2.2 场景二:源和目标数据库实例名称一样

源和目标数据库的实例名一样,配置在同一个dmmal.ini配置文件中,会导致数据库无法启动,异常日志如:MAL_INST_NAME:[DMSERVER] is duplicated in [/home/dmdba/dmdbms/data/DAMENG/dmmal.ini]!
配置原则:确保MAL_HOST所在服务器的MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致。

2.2.2.1 源数据库dmmal.ini配置

[dmdba@db1 ~]$ cd /home/dmdba/dmdbms/data/DAMENG
[dmdba@db1 DAMENG]$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER #当前机器IP:192.168.228.228,确保MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER2 #因为实例名一样会冲突,这里改为不一样的。
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

2.2.2.2 目标数据库dmmal.ini配置

[dmdba@db2 ~]$ cd /home/dmdba/dmdbms/data/DAMENG
[dmdba@db2 DAMENG]$ vi dmmal.ini
[MAL_INST1]
MAL_INST_NAME = DMSERVER2 #因为实例名一样会冲突,这里改为不一样的。
MAL_HOST = 192.168.228.228 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.228 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = DMSERVER #当前机器IP:192.168.228.31,确保MAL_INST_NAME和dm.ini中的INSTANCE_NAME一致
MAL_HOST = 192.168.228.31 #MAL系统监听TCP连接的IP地址
MAL_PORT = 15236 #MAL系统监听TCP连接的端口
MAL_INST_HOST=192.168.228.31 #实例的对外服务IP地址
MAL_INST_PORT=5236 #实例的对外服务端口,和dm.ini中的PORT_NUM一致

2.2.3 重启数据库后,创建LINK

配置好dmmal.ini,重启数据库后,创建LINK:
格式一:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_1 CONNECT 'DAMENG' WITH TEST IDENTIFIED BY 123456789 USING 'DBSERVER';

格式二:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_2 CONNECT 'DAMENG' WITH TEST IDENTIFIED BY 123456789 USING '192.168.228.31/5236';

注:
1、对于场景二,源和目标数据库实例名称一样,不能用格式一方式创建LINK,否则会提示:实例不存在。
2、当dmmal.ini中配置了MAL_INST_HOST和MAL_INST_PORT,使用格式二创建LINK时,使用的端口是MAL_INST_PORT,如果没配置,则使用MAL_PORT。

2.3 通过DPI方式

通过DPI方式,无需开启MAL,无需重启数据库,创建LINK语句如下:
SQL> CREATE OR REPLACE PUBLIC LINK DM_TO_DM_3 CONNECT 'DPI' WITH TEST IDENTIFIED BY 123456789 USING '192.168.228.31:5236';

2.4 验证链接

查询返回记录则说明链接正常:
SQL> SELECT * FROM DUAL@DM_TO_DM_3;
行号 DUMMY


1 X

达梦在线服务平台 https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服