國產數據庫之達夢數據庫 - DM7 MPP集群安裝配置
武漢達夢數據庫作為國產數據庫較有代表性的企業,在數據庫研發方麵投入了大量的精力,其自主研發的達夢數據庫DM7,除了具有單機版可與Oracle相媲美的能力外,同時也研發了一款無共享MPP架構的數據庫軟件,主要麵向在線分析(OLAP)領域。
下麵的分享主要參考和使用達夢公司官網提供的下載包及安裝文檔,感興趣的同學請自行下載。下載鏈接:https://www.dameng.com/service/download.shtml
1.MPP集群規劃
本集群打算使用2台服務器,每台服務器規劃3個數據庫實例,總共6個實例組成的MPP集群。
2.首先創建數據庫用戶:dmdba(兩台服務器都執行)
groupadd dinstall
useradd -g dinstall dmdba -m
passed dmdba
3.將軟件包dm7_xxx.tar.gz上傳到dmdba用戶下,解壓進行安裝(兩台服務器都執行,安裝時各選項保持默認即可)
tar -zxf dm7_xxxxxxxx_neoky5.tar.gz
cd dm7_xxxxxxxx_neo5
chmod 777 DMInstall.bin
字符安裝:./DMInstall.bin -i
安裝完成後,/home/dbdba目錄下生成dmdbms文件夾
4.配置環境變量並生效(兩台服務器都執行)
su - dmdba
cd ~
vim .bash_profile
PATH=$PATH:$HOME/bin:/home/dmdba/dmdbms/bin
source .bash_profile
5.創建達夢數據目錄,這裏使用:/home/dmdba/dmdata/(兩台服務器都執行)
6.分別在兩台服務器上創建六個實例
這裏我們使用dminit命令手工創建,這個命令將創建一個名為 EP0X的數據庫實例,所在的文件路徑在/home/dmdba/dmdata\EP0X下,mal_flag和mpp_flag都設置為1表示將啟用多節點間的網絡通訊,port_num=5236\37\38,表示該節點(數據庫實例)的對外服務端口為5236。
主機1:
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP01 instance_name=EP01 port_num=5236 mal_flag=1 mpp_flag=1
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP02 instance_name=EP02 port_num=5237 mal_flag=1 mpp_flag=1
[dmdba@ha2 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP03 instance_name=EP03 port_num=5238 mal_flag=1 mpp_flag=1
主機2:
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP04 instance_name=EP04 port_num=5236 mal_flag=1 mpp_flag=1
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP05 instance_name=EP05 port_num=5237 mal_flag=1 mpp_flag=1
[dmdba@linux1 ~]$ dminit path=/home/dmdba/dmdata/ db_name=EP06 instance_name=EP06 port_num=5238 mal_flag=1 mpp_flag=1
7.配置集群郵件通信(兩台服務器都執行)
前麵我們已經創建好了6個集群實例,在啟動它們前,還需要做一項配置工作。首先我們需要讓這兩個節點能互相通信,達夢數據庫內部有一個通訊子係統,模仿真實世界的郵件網絡,稱為MAL。
分別在兩台服務器編輯文件(內容相同):dmmal.ini,然後放入對應的三個實例目錄下,例如:/home/dmdba/dmdbms/EP01
[dmdba@ha2 ~]$ cat dmmal.ini
[mal_inst1]
mal_inst_name = EP01
mal_host = 192.168.100.106
mal_port = 5269
[mal_inst2]
mal_inst_name = EP02
mal_host = 192.168.100.106
mal_port = 5270
[mal_inst3]
mal_inst_name = EP03
mal_host = 192.168.100.106
mal_port = 5271
[mal_inst4]
mal_inst_name = EP04
mal_host = 192.168.100.107
mal_port = 5269
[mal_inst5]
mal_inst_name = EP05
mal_host = 192.168.100.107
mal_port = 5270
[mal_inst6]
mal_inst_name = EP06
mal_host = 192.168.100.107
mal_port = 5271
將dmmal.ini分別複製到剛才新建的6個EP實例目錄下:
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP01
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP02
[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/EP03
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP04
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP05
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/EP06
8.配置集群之間協同工作
郵件模塊是一個底層子係統,配置完成使得節點間可以通訊,至於是用於主/備還是讀寫分離等還需要上層決定,因此還需要配置多機協同工作模式。
首先配置dmmpp.ini,然後用工具生成ctl,另一個節點複製生成的ctl即可,最後把生成的dmmpp.ctl文件也放到那6個EP0X文件夾下麵
[dmdba@ha2 ~]$ cat dmmpp.ini
mpp_2pc_flag = 0
[service_name1]
mpp_seq_no = 0
mpp_inst_name = EP01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = EP02
[service_name3]
mpp_seq_no = 2
mpp_inst_name = EP03
[service_name4]
mpp_seq_no = 3
mpp_inst_name = EP04
[service_name5]
mpp_seq_no = 4
mpp_inst_name = EP05
[service_name6]
mpp_seq_no = 5
mpp_inst_name = EP06
備注:這裏也有6項,分別表示有6個節點,其序號分別為0-6,其實例名分別為EP01-EP06, 注意這裏的序號必須從0開始依次編號,實例名必須和dmmal.ini中對應。我們把這個文件命名為dmmpp.ini。
將ini文件轉換為dmmpp.ctl文件:
dmctlcvt t2c dump.ini dmmpp.ctl
將文件分別複製到對應EP0X目錄下:
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP01/
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP02/
[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/EP03/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP04/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP05/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/EP06/
9.分別啟動6個服務
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP01/dm.ini &
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP02/dm.ini &
[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/EP03/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP04/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP05/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/EP06/dm.ini &
10.檢查集群是否啟動
首先,可以通過ps命令查看進程是否正常啟動:
[dmdba@ha2 ~]$ ps -ef | grep dmdba
dmdba 13326 11800 1 15:23 pts/0 00:00:03 dmserver /home/dmdba/dmdata/EP01/dm.ini
dmdba 13477 11800 2 15:24 pts/0 00:00:03 dmserver /home/dmdba/dmdata/EP02/dm.ini
dmdba 13540 11800 2 15:24 pts/0 00:00:03 dmserver /home/dmdba/dmdata/EP03/dm.ini
[dmdba@linux1 ~]$ ps -ef | grep dmdba
dmdba 14973 13824 1 15:25 pts/1 00:00:02 dmserver /home/dmdba/dmdata/EP04/dm.ini
dmdba 15059 13824 2 15:26 pts/1 00:00:02 dmserver /home/dmdba/dmdata/EP05/dm.ini
dmdba 15125 13824 6 15:27 pts/1 00:00:02 dmserver /home/dmdba/dmdata/EP06/dm.ini
另外,可以登錄係統查看是否可以查詢集群相關視圖:
[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA@linux1:5236
SQL> SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =df.GROUP_ID;
我這裏正常返回了各個節點的文件目錄,總共144行。
11.本地查詢模式
達夢提供了一個集群本地查詢模式(登錄時添加*LOCAL參數),可以用來查詢本機的相關數據,在本地模式下,不能進行DML操作。
[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA*LOCAL@linux1:5236
Server[linux1:5236]:mode is normal, state is open
login used time: 41.069(ms)
disql V7.1.5.186-Build(2017.05.23-81019)ENT
Connected to: DM 7.1.5.186
SQL> SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =df.GROUP_ID;
LINEID NAME PATH
---------- ------ ----------------------------------
1 SYSTEM /home/dmdba/dmdata/EP04/SYSTEM.DBF
2 MAIN /home/dmdba/dmdata/EP04/MAIN.DBF
3 TEMP /home/dmdba/dmdata/EP04/TEMP.DBF
4 ROLL /home/dmdba/dmdata/EP04/ROLL.DBF
used time: 6.422(ms). Execute id is 796.
今天分享到此結束,可以看出,達夢MPP配置起來還是相對簡單的,但是集群配置需要步驟都要手動執行,比較繁瑣。另外看到bin文件夾下有dmmpp相關的命令,應該可以集群安裝,有了解的朋友可以留言探討~
最後更新:2017-06-30 21:51:03