注册
达梦数据库-无主备MPP集群搭建详细过程
专栏/培训园地/ 文章详情 /

达梦数据库-无主备MPP集群搭建详细过程

汤小杨 2024/03/29 1126 0 0
摘要

文章目录


一、实验背景

达梦大规模并行处理 MPP(DM Massively Parallel Processing,缩写 DM MPP)是基于达梦数据库管理系统研发的完全对等无共享式集群组件,支持将多个 DM 数据库实例组织为一个并行计算网络,对外提供统一的数据库服务。
本实验通过搭建无主备的MPP集群,来熟悉MPP原理和搭建过程。

二、实验要求

完成MPP集群的搭建,要求如下:
(1)完成MPP集群(不带主备)的部署,并测试建表和插入数据是否会根据分布列进行自动分发。
(2)测试通过服务名连接MPP,连接可自动负载到不同节点。

三、实验步骤

1 集群规划及部署

1.1 集群规划

每个节点需要配置两块网卡,一块对外提供服务,另外一块作为内部通信

实例名 MAL_INST_HOST MAL_INST_PORT MAL_HOST MAL_PORT MPP_SEQNO
EP01 192.168.75.151 5230 1.1.1.21 5231 0
EP02 192.168.75.152 5230 1.1.1.22 5231 1

1.2 dm.ini文件配置

EP01配置:

INSTANCE_NAME = EP01 PORT_NUM = 5230 MAL_INI = 1 MPP_INI = 1

EP02配置:

INSTANCE_NAME = EP02 PORT_NUM = 5230 MAL_INI = 1 MPP_INI = 1

1.3 dmmal.ini文件配置

两个MPP节点的dmmal.ini文件保持一致:

[MAL_INST1] MAL_INST_NAME = EP01 MAL_HOST = 1.1.1.21 MAL_PORT = 5231 MAL_INST_HOST = 192.168.75.151 MAL_INST_PORT = 5230 [MAL_INST2] MAL_INST_NAME = EP02 MAL_HOST = 1.1.1.22 MAL_PORT = 5231 MAL_INST_HOST = 192.168.75.152 MAL_INST_PORT = 5230

1.4 dmmpp.ini文件配置,并配置dmmpp.ctl文件

dmmpp.ctl文件是二进制文件,需要先配置dmmpp.ini文件后配置。
dmmpp.ini文件配置如下:

[SERVICE_NAME1] MPP_SEQ_NO = 0 MPP_INST_NAME = EP01 [SERVICE_NAME2] MPP_SEQ_NO = 1 MPP_INST_NAME = EP02

将dmmpp.ini文件转换为dmmpp.ctl文件,命令中的“TYPE=2”参数表示将文本文件转换成控制文件,也可以使用“TYPE=1”参数进行逆向转换:

./dmctlcvt TYPE=2 SRC=/dm8/data/EP01/dmmpp.ini DEST=/dm8/data/EP01/dmmpp.ctl

image.png
将生成后的dmmpp.ctl文件拷贝到另一个MPP节点,确保所有的MPP节点的dmmpp.ctl文件一致

1.5 启动MPP数据库

直接启动两个MPP节点的dmserver进程,即完成服务启动。
image.png
image.png

2 数据库测试

2.1 根据列自动分发测试

2.1.1 创建哈希分布表

CREATE TABLE T_HASH(C1 INT, C2 CHAR(10))DISTRIBUTED BY HASH (C1);

image.png

2.1.2 插入数据

创建脚本如下:

[dmdba@mpp1 ~]$ cat test.sql begin for i in 1..1000 loop insert into T_HASH values(i,'aaa'); end loop; end; /

执行脚本:
image.png

2.1.3 查看数据分布

全局数据查看,其中#"{mpp_type=global}"可不加,默认为全局查看:

/dm8/bin/disql SYSDBA/SYSDBA@192.168.75.151:5230#"{mpp_type=global}"

sql语句如下:

SQL>select count(*) from t_hash; SQL>select * from t_hash limit 10;

image.png
MPP1上查看数据:

/dm8/bin/disql SYSDBA/SYSDBA@192.168.75.151:5230#"{mpp_type=local}"

sql语句如下:

SQL>select count(*) from t_hash; SQL>select * from t_hash limit 10;

image.png

MPP2上数据查看

/dm8/bin/disql SYSDBA/SYSDBA@192.168.75.152:5230#"{mpp_type=local}"

SQL语句:

SQL>select count(*) from t_hash; SQL>select * from t_hash limit 10;

image.png
可以观察到,数据根据C1列的hash值,把数据分布在了两个MPP数据库上。

2.2 服务名连接测试

2.2.1 dm_svc.conf文件配置

image.png
image.png

2.2.2 读写测试

数据插入:

INSERT INTO T_HASH VALUES(11,'DADADAMENG'); INSERT INTO T_HASH VALUES(1,'HAPPY'); INSERT INTO T_HASH VALUES(12,'苏卡不列'); INSERT INTO T_HASH VALUES(2,'5555555'); commit;

以local的方式登录MPP1查询:

select * from t_hash;

image.png
以local的方式登录MPP2查询:

select * from t_hash;

image.png
查询:

select * from t_hash;

image.png

select *,rowid from t_hash;

image.png

select sf_get_ep_seqno('AAABAAAAAAAAAAAAAB'), sf_get_ep_seqno('AAABAAAAAAAAAAAAAC'), sf_get_ep_seqno('AAAAAAAAAAAAAAAAAB'), sf_get_ep_seqno('AAAAAAAAAAAAAAAAAC');

image.png

四、实验结论

(1)MPP集群可以实现无共享的集群模式,实现计算和存储资源的横向扩展。
(2)MPP集群可以通过列自动分发,提升存储效率和查询效率。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服