达梦数据库系列—21. MPP集群搭建

news/2024/7/7 19:55:30 标签: 数据库, oracle, sql

目录

1、DM MPP 环境搭建

系统规划

系统检查

软件安装

配置 dm.ini

配置 dmmal.ini

配置 dmmpp.ctl

运行 MPP

2、建立分布表

3、停止 MPP 系统

4、MPP 相关系统过程与函数

5、MPP 下系统过程与系统视图


DM MPP主要针对海量数据的 OLAP 应用而研发,对普通的、并发量不大的一般 OLTP 或混合类型应用也适用,但不适合于高并发操作的 OLTP 类型应用。

MPP 系统需要通过网络在各 EP 间传递数据,因此网络的带宽对于 MPP 系统的效率非常重要,建议配置千兆或万兆内部网络。

1、DM MPP 环境搭建

系统规划

两个节点都配置两块网卡,一块接入内部网络交换模块,一块接入到外部交换机。两节点实例名分别为 EP01 和 EP02。

MPP系统规划

实例名

MAL_INST_HOST

MAL_INST_PORT

MAL_HOST

MAL 端口

MPP_SEQNO

EP01

192.168.64.131

5236

192.168.169.141

5337

0

EP02

192.168.64.132

5236

192.168.169.142

5337

1

系统检查

防火墙关闭:

##防止 Linux 防火墙影响数据库的运行,设置开机禁用防火墙并关闭防火墙。

[root@localhost dmdba]#systemctl disable firewalld

[root@localhost dmdba]#systemctl stop firewalld

selinux 检查:

[root@localhost dmdba]#setenforce 0

[root@localhost dmdba]#vim /etc/selinux/config ##设置 selinux 状态为关闭

SELINUX=disabled

##修改后,保存退出

软件安装

两节点进行数据库软件安装,安装目录/dm,步骤略。

配置 dm.ini

在两个机器上分别初始化数据库,分别对两个实例的dm.ini进行配置。

A 机器上初始化库至目录/dm/data/EP01:

dminit path=/dm/data/EP01

B 机器上初始化库至目录/dm/data/EP02:

dminit path=/dm/data/EP02

修改 EP01 的 dm.ini :

INSTANCE_NAME = EP01

PORT_NUM = 5236

MAL_INI = 1

MPP_INI = 1

修改 EP02 的 dm.ini:

INSTANCE_NAME = EP02

PORT_NUM = 5236

MAL_INI = 1

MPP_INI = 1

配置 dmmal.ini

两节点配置完全一样,EP 间可互相拷贝。dmmal.ini 与 dm.ini 放在相同的目录下。

[MAL_INST1]

MAL_INST_NAME = EP01

MAL_HOST = 192.168.169.141

MAL_PORT = 5337

MAL_INST_HOST = 192.168.64.131

MAL_INST_PORT = 5236

[MAL_INST2]

MAL_INST_NAME = EP02

MAL_HOST = 192.168.169.142

MAL_PORT = 5337

MAL_INST_HOST = 192.168.64.132

MAL_INST_PORT = 5236

配置 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

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

转换生成的 dmmpp.ctl 需要放在与 dm.ini 同一个目录。

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

将生成的 dmmpp.ctl 拷贝至另一 EP,保证 MPP 系统中所有 EP 的 dmmpp.ctl 完全相同。

运行 MPP

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

dmserver /dm/data/EP01/DAMENG/dm.ini

dmserver /dm/data/EP02/DAMENG/dm.ini

2、建立分布表

DM MPP 支持表数据的LIST 分布、范围分布、哈希分布、随机分布、复制分布类型。

单机模式下建的分布表和普通表一样,但是不能创建指定实例名的分布表。

创建哈希分布表 T_HASH,分布列为 C1。

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

创建随机分布表 T_RANDOM。

CREATE TABLE T_RANDOM(C1 INT, C2 CHAR(10))DISTRIBUTED RANDOMLY;

创建复制分布表 T_FULLY。

CREATE TABLE T_FULLY(C1 INT, C2 CHAR(10))DISTRIBUTED FULLY;

创建范围分布表 T_RANGE,分布列为 C1。

CREATE TABLE T_RANGE (C1 INT, C2 CHAR(10)) DISTRIBUTED BY RANGE (C1) (VALUES EQU OR LESS THAN (100) ON EP01, VALUES LESS THAN(MAXVALUE) ON EP02);

创建 LIST 分布表 T_LIST,分布列为 C1。

CREATE TABLE T_LIST(C1 INT, C2 CHAR(10))

DISTRIBUTED BY LIST (C1) (VALUES(3) ON EP01,VALUES(4) ON EP02);

如果没有分区,会报错:

[-2731]:没有找到合适的分区.

创建哈希分布的RANGE分区表。

CREATE TABLE T_HASH_RANGE_PARTITION

(C1 INT, C2 CHAR(10), C3 CHAR(10))

PARTITION BY RANGE(C1)

(

PARTITION PART_1 VALUES LESS THAN(0) ,

PARTITION PART_2 VALUES LESS THAN(10) ,

PARTITION PART_3 VALUES LESS THAN(100) ,

PARTITION PART_4 VALUES LESS THAN(MAXVALUE)

)

DISTRIBUTED BY HASH (C1);

3、停止 MPP 系统

需要停止 DM MPP 系统的运行时,只需要停止每个 EP 的 DM 实例即可,没有特别的顺序要求。

注意:如果MPP有其中一个节点没有正常启动,disql连接会报错:

[-6024]:全局登录时远程节点连接失败.

4、MPP 相关系统过程与函数

1.设置当前会话是否只查询本节点数据。默认表示可以查询全部节点数据:

SP_SET_SESSION_MPP_SELECT_LOCAL(1);

设为1时,事务会变为只读事务,插入会报错:

[-6506]:试图在只读事务中修改数据.

2.设置本会话上是否允许 DDL 操作。本地登录默认不允许 DDL 操作:

SP_SET_SESSION_LOCAL_TYPE (1);

CREATE TABLE TEST(C1 INT);

SP_SET_SESSION_LOCAL_TYPE (0);

3.根据查询出的行数据的 ROWID 获取本条数据来自哪个 EP:

SELECT SF_GET_EP_SEQNO(ROWID);

4.获取本会话连接的 EP 序号:

SELECT SF_GET_SELF_EP_SEQNO();

5.统计 MPP 环境下表在各个节点的数据行数:

SP_GET_EP_COUNT('SYSDBA','T');

5、MPP 下系统过程与系统视图

  1. 获取 EP 节点配置信息

SELECT * FROM V$MPP_CFG_ITEM WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

2.获取当前会话连接的实例名

SELECT NAME FROM V$INSTANCE WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

3.获取 MPP 系统内所有 EP 的所有会话

SELECT * FROM V$SESSIONS;

4.获取当前连接的实例上的所有会话

SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = SF_GET_SELF_EP_SEQNO();

5.获取实例 EP01 上的所有会话

SELECT * FROM V$SESSIONS WHERE SF_GET_EP_SEQNO(ROWID) = (SELECT DISTINCT

EP_SEQNO FROM V$MPP_CFG_ITEM WHERE INST_NAME ='EP01');

6.获取所接实例上的表 TEST 的使用空间

SELECT TABLE_USED_PAGES('SYSDBA','TEST');

7.获取每个实例上的表 TEST 使用空间

SELECT TABLE_USED_PAGES('SYSDBA','TEST'), NAME FROM V$INSTANCE;

达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台


http://www.niftyadmin.cn/n/5535069.html

相关文章

antd vue a-select 下拉框模糊查询失效解决方法

我原以为这是一个简单的配置,写上就好了,没想到竟然无法搜索,原因是antd下拉框模糊搜索(show-search)是默认按照value字段来查询的,但是一般我们的都是需要按照label这个属性来查询的。简单点按照我下面标红…

Linux——移动文件或目录,查找文件,which命令

移动文件或目录 作用 - mv命令用于剪切或重命名文件 格式 bash mv [选项] 源文件名称 目标文件名称 注意 - 剪切操作不同于复制操作,因为它会把源文件删除掉,只保留剪切后的文件。 - 如果在同一个目录中将某个文件剪切后还粘贴到当前目录下,…

【FFmpeg】avcodec_find_encoder和avcodec_find_decoder

目录 1.avcodec_find_encoder2.avcodec_find_decoder3.小结 FFmpeg相关记录: 示例工程: 【FFmpeg】调用ffmpeg库实现264软编 【FFmpeg】调用ffmpeg库实现264软解 【FFmpeg】调用ffmpeg库进行RTMP推流和拉流 【FFmpeg】调用ffmpeg库进行SDL2解码后渲染 流…

PHP电商系统开发指南高级技巧

开发高级 php 电商系统所需的技巧包括:数据库优化:使用索引、规范化数据结构和缓存机制。性能优化:启用页面缓存、优化图像和使用 cdn。购物车管理:使用会话或数据库存储数据,实现实时更新和弃单恢复。支付集成&#x…

大数据面试题之Hive(2)

目录 Hive的join操作原理,leftjoin、right join、inner join、outer join的异同? Hive如何优化join操作 Hive的mapjoin Hive语句的运行机制,例如包含where、having、group by、orderby,整个的执行过程? Hive使用的时候会将数据同步到HD…

系统进行分库分表的拆分,读写分离的高可用架构。以及对于海量的C端接口查询接入ES搜索引擎。且将非核心流程异步化,整体提高核心功能的性能和稳定性。

构建一个高可用的系统架构,涉及到分库分表、读写分离、使用搜索引擎以及异步处理非核心流程等多个方面。以下是这些策略的详细说明和实施要点: 1. **分库分表(Sharding)**: - 将数据分布到多个数据库中&#xff0c…

微信小程序的运行机制与更新机制

1. 小程序运行机制 1.1. 冷启动与热启动 冷启动为用户第一次打开小程序时,因为之前没有打开过,这是第一种冷启动的情兑。第二种情况为虽然之前用户打开过,但是小程序被用户主动的销毁过,这种情况下我们再次打开小程序&#xff0…

Spring Boot中的安全漏洞防护

Spring Boot中的安全漏洞防护 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Spring Boot应用中有效防护安全漏洞。随着软件应用程序的复杂…