MPP 环境搭建与问题解决

目录

一、环境搭建

1.系统规划

2.配置 dm.ini

3.配置 dmmal.ini

4.配置 dmmpp.ctl

5.运行 MPP

二、问题解决

1.启动两实例后,启动./disql报错

 2.普通表测试

3.临时表测试


一、环境搭建

在linux环境下搭建两节点的MPP集群。主要步骤如下:

1.系统规划

本例配置一个两节点 MPP。两节点实例名分别为DMSERVERDMSERVER1,相关的IP、端口等规划见下表。

实例名

MAL_INST_HOST

MAL_INST_PORT

MAL_HOST

MAL端口

MPP_SEQNO

DMSERVER

10.9.13.20

5236

10.9.13.20

61141

0

DMSERVER1

10.9.13.21

5236

10.9.13.21

61142

1

2.配置 dm.ini

在两台服务器上分别创建数据库,并创建实例,实例的初始化参数保持一致,以免产生错误。

分别对两个实例的 dm.ini 进行配置。

修改DMSERVER的 dm.ini 的以下几个参数如下:

INSTANCE_NAME = DMSERVER

PORT_NUM = 5236

MAL_INI = 1

MPP_INI = 1

修改 DMSERVER1 的 dm.ini 的以下几个参数如下:

INSTANCE_NAME = DMSERVER1

PORT_NUM = 5237

MAL_INI = 1

MPP_INI = 1

3.配置 dmmal.ini

为两个实例配置 dmmal.ini 如下,配置完全一样,dmmal.ini 与 dm.ini 放在相同的目录下。

[MAL_INST1]
MAL_INST_NAME = DMSERVER
MAL_HOST = 10.9.13.20
MAL_PORT = 61141
MAL_INST_HOST = 10.9.13.20
MAL_INST_PORT = 5236


[MAL_INST2]
MAL_INST_NAME = DMSERVER1
MAL_HOST = 10.9.13.21
MAL_PORT = 61142
MAL_INST_HOST = 10.9.13.21
MAL_INST_PORT = 5237

4.配置 dmmpp.ctl

dmmpp.ctl 是一个二进制文件,用户不能直接配置,需要先配置 dmmpp.ini。

配置 dmmpp.ini 如下:

[SERVICE_NAME1]

MPP_SEQ_NO = 0

MPP_INST_NAME= DMSERVER

[SERVICE_NAME2]

MPP_SEQ_NO = 1

MPP_INST_NAME= DMSERVER1

使用 DM 提供的工具 dmctlcvt 将 dmmpp.ini 转换成 dmmpp.ctl,dmctlcvt 工具

在 DM 安装目录的“bin”子目录中。 转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录。

执行以下语句:

./dmctlcvt TYPE=2 SRC=/home/dmdba/dm8/data/DAMENG/dmmpp.ini DEST=/home/dmdba/dm8/data
/DAMENG/dmmpp.ctl

将生成的 dmmpp.ctl 拷贝至另一台服务器,保证 MPP 系统中所有实例的 dmmpp.ctl 完全相同。

5.运行 MPP

经过前面四个步骤,DM MPP 环境已经配置完成。

分别启动DMSERVER和DMSERVER1的 DM 数据库实例(顺序不分先后),DM MPP 系统即能正常运行,用户就可以登录任一实例进行数据库操作。

二、问题解决

1.启动两实例后,启动./disql报错

 原因:极有可能是防火墙没关;

解决办法:执行以下命令关闭防火墙

systemctl status firewalld     #查看防火墙状态
systemctl stop firewalld       #关闭防火墙
systemctl disable firewalld    #执行开机禁用防火墙

 2.普通表测试

(1)创建表t1,并插入数据(不提交);

SQL> create table t1(a1 int);
操作已执行
已用时间: 15.912(毫秒). 执行号:400.
SQL> insert into t1 values(1);
影响行数 1

已用时间: 0.655(毫秒). 执行号:424177.

(2)节点2查询表t1

SQL> select * from t1;
未选定行

已用时间: 4.628(毫秒). 执行号:181510.

(3)在节点1执行提交

SQL> commit;
操作已执行
已用时间: 0.988(毫秒). 执行号:424262.

(4)在节点2查询表1

SQL> select * from t1;

行号     A1
---------- -----------
1          1

已用时间: 2.242(毫秒). 执行号:181512.

 结论:MPP支持普通表和表数据同步

3.临时表测试

由于会话级临时表只对当前会话有效,所以只测试事务级临时表;

(1)在节点1创建事务级临时表并插入数据,并在未提交的情况下查询数据:

SQL> create global temporary table tem1 (c1 int, c2 varchar(20))on commit delete rows;
操作已执行
已用时间: 9.593(毫秒). 执行号:423.
SQL> insert into tem1 values(1,'a');
影响行数 1

已用时间: 0.693(毫秒). 执行号:424278.
SQL> select * from tem1;

行号     C1          C2
---------- ----------- --
1          1           a

已用时间: 2.772(毫秒). 执行号:424280.

(2)在节点2查询tem1表:

SQL> select * from tem1;
未选定行

已用时间: 2.389(毫秒). 执行号:181701.

 (3)在节点1执行提交操作,并查询:

SQL> commit;
操作已执行
已用时间: 1.094(毫秒). 执行号:424281.
SQL> select * from tem1;
未选定行

已用时间: 2.125(毫秒). 执行号:424283.

 (4)在节点2执行查询操作:

SQL> select * from tem1;
未选定行

已用时间: 2.013(毫秒). 执行号:181703.

原因:在临时表tem1插入数据并执行提交后,临时表被清空,因此节点2会一直查不到节点1的临时表数据。

结论:MPP集群不支持临时表数据同步。

更多问题欢迎到达梦技术社区咨询哦!首页 | 达梦云适配中心 (dameng.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值