mpp集群(不带主备)搭建
一、主备环境
实例名 |
MAL_HOST |
PORT_NUM |
MAL_PORT |
MALL_DW_PORT |
MPP_SEQNO |
EP01 |
192.168.138.198 |
5236 |
5337 |
5253 |
0 |
EP02 |
192.168.138.199 |
5236 |
5337 |
5253 |
1 |
二、配置
1、创建实例
./dminit PATH=/home/dmdba/dmdbms/data/EP01 INSTANCE_NAME="EP01" PORT_NUM=5236
./dminit PATH=/home/dmdba/dmdbms/data/EP02 INSTANCE_NAME="EP02" PORT_NUM=5236
- 注意要初始化完成后要分别开停库一次。
2、配置dm.ini
EP01:
INSTANCE_NAME= EP01
PORT_NUM= 5236
MAL_INI= 1
MPP_INI= 1
EP02:
INSTANCE_NAME= EP02
PORT_NUM= 5236
MAL_INI= 1
MPP_INI= 1
3、配置dmmal.ini
为两个EP配置dmmal.ini如下,配置完全一样,EP间可互相拷贝。dmmal.ini与dm.ini放在相同的目录下
[MAL_INST1]
MAL_INST_NAME = EP01 #实例名,和 dm.ini 中的 INSTANCE_NAME 一致
MAL_HOST = 192.168.138.198 #MAL 系统监听 TCP 连接的 IP 地址 MAL_PORT = 5337 #MAL 系统监听 TCP 连接的端口
MAL_INST_HOST = 192.168.168.198 #实例的对外服务 IP 地址 MAL_INST_PORT = 5236 #实例的对外服务端口,和 dm.ini 中的PORT_NUM一致
[MAL_INST2]
MAL_INST_NAME = EP02
MAL_HOST = 192.168.138.199
MAL_PORT = 5337
MAL_INST_HOST = 192.168.138.199
MAL_INST_PORT = 5236
4、配置dmmpp.ctl
[SERVICE_NAME1]
MPP_SEQ_NO = 0
MPP_INST_NAME= EP01
[SERVICE_NAME2]
MPP_SEQ_NO = 1
MPP_INST_NAME= EP02
使用DM提供的工具dmctlcvt将dmmpp.ini转换成dmmpp.ctl,dmctlcvt工具在DM安装目录的"bin"子目录中。
[dmdba@MPP01 bin]$ ./dmctlcvt TYPE=2 SRC=/home/dmdba/dmdbms/data/EP01/DAMENG/dmmpp.ini DEST=/home/dmdba/dmdbms/data/EP01/DAMENG/dmmpp.ctl
3、运行
分别启动EP01和EP02的数据库实例就可以了、顺序不分先后。DM MPP系统即能正常运行,用户就可以登录任一EP进行数据库操作了。
SQL> create table users(uname varchar(10),age int);
在EP01中创建表格并插入数据
insert into users values('hyf',20);
insert into users values('messi',33);
commit;
在EP02中查找,发现能查找出刚才的数据。
- 注意:[dmdba@MPP02 bin]$ ./disql SYSDBA/SYSDBA@192.168.138.199:5236 是全局登录
查看本地数据可以使用
[dmdba@MPP02 bin]$ ./disql SYSDBA/SYSDBA*local@192.168.138.199:5236
将EP01实例关闭制造故障
在EP02中插入数据:
SQL> insert into users values('torries',37);commit;
可以插入成功,可见即使一个节点故障另一个节点依旧能提供服务。