達夢DBlink叢集之間通訊搭建

初禾木發表於2020-10-14


前言

提示:實際生產環境中,往往會遇到跨庫訪問和抽取資料。可以利用的工具舉不勝數,如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的埠號,不是資料庫埠號。

相關文章