达梦DBlink集群之间通信搭建


前言

提示:实际生产环境中,往往会遇到跨库访问和抽取数据。可以利用的工具举不胜数,如ETL,DBLINK等工具,本文介绍在DM7集群与集群之间利用DBLINK实现数据库之间相互访问。


提示:以下是本篇文章正文内容,下面案例可供参考

一、DBLINGK是什么

示例:
DBLINK(Database Link)数据库链接,可以理解成是一个通道,如果想通过本地数据库去访问另一个数据库中表的数据时,本地数据库中要创建远程数据库的DBLINK,通过DBLINK本地数据库可以访问远程数据库中表的数据,DM7的DBLINK借助达梦自身的MAL系统实现。

二、测试环境

首先准备好集群环境,保证各个主机能够互相ping通能够通信,我是在本地虚拟机进行测试,架构图如下:

实例名IP地址系统版本主机名
DM1192.168.100.101Centos7.4CentOS7-01
DM2192.168.100.102Centos7.4CentOS7-02
GRP1_RWW_01192.168.100.103Centos7.4CentOS7-03
GRP1_RWW_02192.168.100.104Centos7.4CentOS7-04
主备集群读写分离集群
DM1、DM2GRP1_RWW_01、GRP1_RWW_02

三、操作步骤

1、集群搭建

主备和读写分离集群搭建过程省略,如果搭建成功的话如下图在监视器中都是open状态:
主备:
在这里插入图片描述

读写分离库:
在这里插入图片描述
从图中看搭建集群成功接下来进行DBlink的搭建

2、集群mal文件的修改

我们要知道在达梦数据库中DBlink的通信是通过我们的mal文件进行通信的,所以对于集群之间通信需要将mal文件修改一致即可,注意:是所有主机上的mal必须是一致的

修改主机192.168.100.101上的mal文件:

MAL_CHECK_INTERVAL = 5 
MAL_CONN_FAIL_INTERVAL = 5 
[MAL_INST1]
 MAL_INST_NAME = DM1
 MAL_HOST = 192.168.100.101
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.101 
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141 
 
[MAL_INST2]
 MAL_INST_NAME = DM2
 MAL_HOST = 192.168.100.102
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.102
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141
 
[MAL_INST3]
MAL_INST_NAME = GRP1_RWW_01
MAL_HOST = 192.168.100.103
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

[MAL_INST4]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 192.168.100.104
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

修改主机192.168.100.102上的mal文件:

MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 5 
[MAL_INST1]
 MAL_INST_NAME = DM1
 MAL_HOST = 192.168.100.101 
 MAL_PORT = 61141 
 MAL_INST_HOST = 192.168.100.101
 MAL_INST_PORT = 5236 
 MAL_DW_PORT = 52141
 
[MAL_INST2]
 MAL_INST_NAME = DM2
 MAL_HOST = 192.168.100.102
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.102
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141
 
[MAL_INST3]
MAL_INST_NAME = GRP1_RWW_01
MAL_HOST = 192.168.100.103
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

[MAL_INST4]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 192.168.100.104
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

修改主机192.168.100.103上的mal文件:

MAL_CHECK_INTERVAL = 5 
MAL_CONN_FAIL_INTERVAL = 5 
[MAL_INST1]
 MAL_INST_NAME = DM1 
 MAL_HOST = 192.168.100.101
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.101
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141 
 
[MAL_INST2]
 MAL_INST_NAME = DM2
 MAL_HOST = 192.168.100.102
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.102
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141
 
[MAL_INST3]
MAL_INST_NAME = GRP1_RWW_01
MAL_HOST = 192.168.100.103
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

[MAL_INST4]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 192.168.100.104
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

修改主机192.168.100.104上的mal文件:

MAL_CHECK_INTERVAL = 5 
MAL_CONN_FAIL_INTERVAL = 5 
[MAL_INST1]
 MAL_INST_NAME = DM1 
 MAL_HOST = 192.168.100.101
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.101
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141 
 
[MAL_INST2]
 MAL_INST_NAME = DM2
 MAL_HOST = 192.168.100.102
 MAL_PORT = 61141
 MAL_INST_HOST = 192.168.100.102
 MAL_INST_PORT = 5236
 MAL_DW_PORT = 52141
 
[MAL_INST3]
MAL_INST_NAME = GRP1_RWW_01
MAL_HOST = 192.168.100.103
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.103
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

[MAL_INST4]
MAL_INST_NAME = GRP1_RWW_02
MAL_HOST = 192.168.100.104
MAL_PORT = 61141
MAL_INST_HOST = 192.168.100.104
MAL_INST_PORT = 5236
MAL_DW_PORT = 52141

修改完毕,检查无误后,重启服务
192.168.100.101服务器:

[dmdba@CentOS7-01 bin]$ ./DmServiceDM1 restart

192.168.100.102服务器:

[dmdba@CentOS7-02 bin]$ ./DmServiceDM2 restart

192.168.100.103服务器:

[dmdba@CentOS7-03 conf]$ ./DmServiceGRP1_RWW_01 restart

192.168.100.104服务器:

[dmdba@CentOS7-04 conf]$ ./DmServiceGRP1_RWW_02 restart

重启之后使用监视器查看状态,为open就继续往下操作

3、DBlink搭建的两种方式

3、1图形化创建

想达梦数据库的话有个管理工具,在此我们可以使用管理工具来创建,也更快速。

打开管理工具连接库之后----外部链接(创建就是DBlink)

在这里插入图片描述
右击外部链接—点击新建—定义名称—注意选择链接字符串时右边有个小箭头可以列出所有的主机
重点:如果没有的话自己定义,IP后面的端口要搞清楚,它是mal文件中的MAL_PORT端口,不是数据库端口
在这里插入图片描述
创建完成后—可以看到已经有LINK01了----右击测试----测试成功两边就可以分享表了
在这里插入图片描述

3、2字符串创建

在192.168.100.103上创建一个测试表;

[dmdba@CentOS7-03 bin]$ ./disql 
disql V7.6.0.197-Build(2019.09.12-112648)ENT 
用户名:
密码:
服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间: 4.334(毫秒)
SQL> create table CS(id int);
操作已执行
已用时间: 174.646(毫秒). 执行号:6.

在192.168.100.101上创建DBlink:

[dmdba@CentOS7-01 bin]$ ./disql 

disql V7.6.0.197-Build(2019.09.12-112648)ENT 
用户名:密码:

服务器[LOCALHOST:5236]:处于主库打开状态
登录使用时间: 5.150(毫秒)
SQL> 
SQL> CREATE or replace PUBLIC LINK LINK02  CONNECT 'DAMENG' WITH SYSDBA IDENTIFIED BY SYSDBA USING '192.168.100.103/61141';
操作已执行
已用时间: 39.064(毫秒). 执行号:38.
SQL> 
SQL> insert into CS@LINK02 values(1);
影响行数 1
SQL> select * from CS@LINK02;

行号     ID         
---------- -----------
1          1

已用时间: 1.503(毫秒). 执行号:40.

测试并创建成功。


总结

提示:以上就是今天要讲的内容,本文仅仅简单介绍了DBlink的两种使用方法

特别注意的两个点就是MAL文件各个主机一定要一致,还有就是IP后面跟的端口是MAL文件中MAL_PORT的端口号,不是数据库端口号。


版权声明:本文为weixin_45375734原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。