修改系统时间,保持一致

date -s 16:58:30

hwclock -w

1.MPP集群规划

本集群打算使用2台服务器

实例名   MAL_INST_HOST  MAL_INST_PORT MAL_HOST MAL   端口 MPP_SEQNO

HNSI01   10.120.130.92  5236          192.168.130.92 5269 0

HNSI02   10.120.130.93  5237          192.168.130.93 5270 1

2.首先创建数据库用户:dmdba(两台服务器都执行)

groupadd dinstall
useradd -g dinstall dmdba -m
passwd dmdba

3.将软件包上传到dmdba用户下,解压进行安装(两台服务器都执行,安装时各选项保持默认即可)

--DM8
mount /tmp/dm8_setup_rh6_64_ent_8.1.1.88_20200629.iso /mnt/ -o loop
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命令手工创建,这个命令将创建一个名为 HNSI01的数据库实例,所在的文件路径在/home/dmdba/dmdata/HNSI01下,mal_flag和mpp_flag都设置为1表示将启用多节点间的网络通讯,port_num=5236,表示该节点(数据库实例)的对外服务端口为5236。

主机1:

[dmdba@ha2 ~]$ ./dminit path=/home/dmdba/dmdata/ db_name=HNSI01 instance_name=HNSI01 port_num=5236 mal_flag=1 mpp_flag=1

主机2:

[dmdba@linux1 ~]$ ./dminit path=/home/dmdba/dmdata/ db_name=HNSI02 instance_name=HNSI02 port_num=5237 mal_flag=1 mpp_flag=1

注:修改主机2端口为5237

7.配置集群邮件通信(两台服务器都执行)

前面我们已经创建好了2个集群实例,在启动它们前,还需要做一项配置工作。首先我们需要让这两个节点能互相通信,达梦数据库内部有一个通讯子系统,模仿真实世界的邮件网络,称为MAL。

分别在两台服务器编辑文件(内容相同):dmmal.ini,然后放入对应的三个实例目录下,例如:/home/dmdba/dmdbms/HNSI01

[dmdba@ha2 ~]$ cat dmmal.ini
[mal_inst1]
mal_inst_name = HNSI01
mal_host = 192.168.130.92
mal_port = 5269
mal_inst_host = 10.120.130.92
mal_inst_port = 5236
[mal_inst2]
mal_inst_name = HNSI02
mal_host = 192.168.130.93
mal_port = 5270
mal_inst_host = 10.120.130.93
mal_inst_port = 5237

将dmmal.ini分别复制到刚才新建的EP实例目录下:

[dmdba@ha2 ~]$ cp dmmal.ini dmdbms/HNSI01
[dmdba@linux1 ~]$ cp dmmal.ini dmdbms/HNSI02

8.配置集群之间协同工作

邮件模块是一个底层子系统,配置完成使得节点间可以通讯,至于是用于主/备还是读写分离等还需要上层决定,因此还需要配置多机协同工作模式。

首先配置dmmpp.ini,然后用工具生成ctl,另一个节点复制生成的ctl即可,最后把生成的dmmpp.ctl文件也放到那6个EP0X文件夹下面

[dmdba@ha2 ~]$ cat dmmpp.ini
[service_name1]
mpp_seq_no = 0
mpp_inst_name = HNSI01
[service_name2]
mpp_seq_no = 1
mpp_inst_name = HNSI02
su - dmdba
cd ~
vim .bash_profile
#PATH=$PATH:$HOME/bin:/home/dmdba/dmdbms/bin
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH:$HOME/bin
source .bash_profile

备注:这里也有2项,分别表示有2个节点,其序号分别为0-1,其实例名分别为HNSI01-HNSI02, 注意这里的序号必须从0开始依次编号,实例名必须和dmmal.ini中对应。我们把这个文件命名为dmmpp.ini。

将ini文件转换为dmmpp.ctl文件:

dmctlcvt TYPE=2 SRC=/home/dmdba/dmdata/HNSI01/dmmpp.ini DEST=/home/dmdba/dmdata/HNSI01/dmmpp.ctl
--dmctlcvt t2c dmmpp.ini dmmpp.ctl

将文件分别复制到对应HNSI02目录下:

[dmdba@ha2 ~]$ cp dmmpp.ctl dmdata/HNSI01/
[dmdba@linux1 ~]$ cp dmmpp.ctl dmdata/HNSI02/

9.分别启动2个服务

[dmdba@ha2 ~]$ nohup dmserver /home/dmdba/dmdata/HNSI01/dm.ini &
[dmdba@linux1 ~]$ nohup dmserver /home/dmdba/dmdata/HNSI02/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/HNSI01/dm.ini
[dmdba@linux1 ~]$ ps -ef | grep dmdba
dmdba     15059  13824  2 15:26 pts/1    00:00:02 dmserver /home/dmdba/dmdata/HNSI02/dm.ini

另外,可以登录系统查看是否可以查询集群相关视图:

[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA@10.120.130.92:5236
disql SYSDBA/SYSDBA@10.120.130.93:5237
SQL> SELECT ts.NAME, df.PATH FROM V$TABLESPACE AS ts, V$DATAFILE AS df WHERE ts.ID =df.GROUP_ID;

我这里正常返回了各个节点的文件目录。

11.本地查询模式

达梦提供了一个集群本地查询模式(登录时添加*LOCAL参数),可以用来查询本机的相关数据,在本地模式下,不能进行DML操作。

[dmdba@linux1 ~]$ disql SYSDBA/SYSDBA*LOCAL@10.120.130.92: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
---------- ------ -------.........