前言
提示:实际生产环境中,往往会遇到跨库访问和抽取数据。可以利用的工具举不胜数,如ETL,DBLINK等工具,本文介绍在DM7集群与集群之间利用DBLINK实现数据库之间相互访问。
提示:以下是本篇文章正文内容,下面案例可供参考
一、DBLINGK是什么
示例:
DBLINK(Database Link)数据库链接,可以理解成是一个通道,如果想通过本地数据库去访问另一个数据库中表的数据时,本地数据库中要创建远程数据库的DBLINK,通过DBLINK本地数据库可以访问远程数据库中表的数据,DM7的DBLINK借助达梦自身的MAL系统实现。
二、测试环境
首先准备好集群环境,保证各个主机能够互相ping通能够通信,我是在本地虚拟机进行测试,架构图如下:
| 实例名 | IP地址 | 系统版本 | 主机名 |
|---|---|---|---|
| DM1 | 192.168.100.101 | Centos7.4 | CentOS7-01 |
| DM2 | 192.168.100.102 | Centos7.4 | CentOS7-02 |
| GRP1_RWW_01 | 192.168.100.103 | Centos7.4 | CentOS7-03 |
| GRP1_RWW_02 | 192.168.100.104 | Centos7.4 | CentOS7-04 |
| 主备集群 | 读写分离集群 |
|---|---|
| DM1、DM2 | GRP1_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的端口号,不是数据库端口号。