注册
通过 DEM 部署 DM8 两节点MPP
专栏/技术分享/ 文章详情 /

通过 DEM 部署 DM8 两节点MPP

wwhhdd 2026/09/23 190 0 0
摘要

通过 DEM 部署 DM8 两节点MPP

使用用 DEM 部署两节点MPP。两个节点组成同一个数据库系统,都可以提供数据库服务。部署时由 DEM 统一下发任务,在两个节点创建实例并生成 MPP 所需配置文件。

1. 环境规划

本文以两个 Linux 节点为例,实际部署时替换为现场地址和目录。

项目 节点 1 节点 2
主机地址 192.168.1.101 192.168.1.102
实例名 MPP_01 MPP_02
数据库端口 5236 5236
MAL 端口 5336 5337
DM 软件目录 /home/dmdba/dmdbms /home/dmdba/dmdbms
数据目录 /dmdata/mpp /dmdata/mpp
DMAgent 目录 /home/dmdba/dmdem/agent /home/dmdba/dmdem/agent

部署关系如下:

                  ┌───────────────┐
                  │      DEM      │
                  └───────┬───────┘
                          │
             ┌────────────┴────────────┐
             │                         │
       ┌─────▼─────┐             ┌─────▼─────┐
       │ DMAgent 1 │             │ DMAgent 2 │
       └─────┬─────┘             └─────┬─────┘
             │                         │
       ┌─────▼─────┐  MAL 通信   ┌─────▼─────┐
       │  MPP_01   │◄───────────►│  MPP_02   │
       └───────────┘             └───────────┘

2. 部署前准备

两个节点都先安装相同版本的 DM 软件,只安装软件,不在本次 MPP 数据目录中提前执行 dminit 创建单机库。DEM 后续会按实例规划初始化数据库、生成 MPP 配置并注册服务。

2.1 安装 DM 软件

以下操作在两个节点都执行。以 root 用户安装,安装包挂载目录以 /mnt 为例:

groupadd dinstall useradd -g dinstall -m -d /home/dmdba dmdba passwd dmdba mkdir -p /home/dmdba/dmdbms mkdir -p /dmdata/mpp chown -R dmdba:dinstall /home/dmdba chown -R dmdba:dinstall /dmdata mount -o loop dm8_xxx.iso /mnt

切换至 dmdba 执行安装:

su - dmdba /mnt/DMInstall.bin -i

安装完成后切回 root,执行安装程序输出的 root 脚本:

su - root /home/dmdba/dmdbms/script/root/root_installer.sh

这里不执行 dminit,也不要启动已有的同路径单机实例。后面 DEM 会在工作目录创建 MPP 实例及相关控制文件。

2.2 准备 DEM

DEM 可以部署在独立服务器,也可以部署在其中一个实验节点。DEM 服务、存储库和基础 dmagent 的部署可参考DM8 DEM 9.1.1 单机部署实战;本次只要求 DEM 页面能够正常登录,且能访问两个 MPP 节点。

准备好以下信息,后续配置 Agent 时会用到:

项目 示例
DEM 服务器地址 192.168.1.100
DEM Web 端口 8080
DEM 访问地址 http://192.168.1.100:8080/dem
DEM service_key 以实际值为准

访问 http://<DEM_IP>:<DEM_PORT>/dem,确认可正常登录后再继续。

两端检查 DM 版本、网络和端口:

/home/dmdba/dmdbms/bin/disql -id ping -c 3 <对端IP> ss -lntp | egrep ':5236|:5336|:5337' || true

两端 DM 版本必须一致,数据库端口和 MAL 端口不能被占用。若启用了防火墙,还需要放通数据库端口及本节点的 MAL 端口。

# 节点 1 firewall-cmd --permanent --add-port=5236/tcp firewall-cmd --permanent --add-port=5336/tcp # 节点 2 firewall-cmd --permanent --add-port=5236/tcp firewall-cmd --permanent --add-port=5337/tcp firewall-cmd --reload

DEM 本身可以独立部署,也可以部署在其中一个实验节点。浏览器能够访问 DEM 后,再开始配置 DMAgent。

3. 配置两个节点的 DMAgent

DEM 通过 DMAgent 获取主机信息并下发部署任务,两个 MPP 节点都要部署 Agent。

3.1 准备 Agent

DMAgent 依赖 Java 1.8 及以上环境,先确认:

java -version

以 DM 安装目录自带的 Agent 为例,两端执行:

ls -ld /home/dmdba/dmdbms/tool/dmagent mkdir -p /home/dmdba/dmdem cp -r /home/dmdba/dmdbms/tool/dmagent /home/dmdba/dmdem/agent chown -R dmdba:dinstall /home/dmdba/dmdem/agent chmod -R 755 /home/dmdba/dmdem/agent

如果 /home/dmdba/dmdem/agent 已存在,不要重复覆盖,先检查现有配置:

ls -l /home/dmdba/dmdem/agent/agent.ini

不同版本安装包中 DMAgent 的来源和目录可能不同;也可以从 DEM 的资源包页面获取与 DEM 匹配的 Agent 包。

3.2 修改 agent.ini

两端编辑 /home/dmdba/dmdem/agent/agent.ini,重点修改以下项:

center_url=http://<DEM_IP>:<DEM_PORT>/dem ip_list=[<当前节点IP>] dm_bin_path=/home/dmdba/dmdbms/bin gather_enable=true service_enable=true

center_url 是 DEM 地址,ip_list 填写当前机器可被 DEM 访问的地址。两台机器的 ip_list 不能都写成同一个 IP。

3.3 配置 service_key 并启动

Agent 与 DEM 的 service_key 必须一致。若需要修改 DEM 的 service_key,使用可连接 DEM 存储库的账号执行:

UPDATE DEM.ADMIN_CONFIG SET VAL = '<自定义service_key>' WHERE NAME = 'service_key'; COMMIT;

两端 Agent 目录使用相同的值执行:

cd /home/dmdba/dmdem/agent ./start.sh INSTALL_SERVICE_KEY '<service_key>'

集群部署需要 Agent 按实际版本要求使用相应权限运行。以当前版本脚本为例,使用 root 注册并启动服务:

cd /home/dmdba/dmdem/agent ./service.sh install # 按提示填写 agent 目录、agent.ini 路径和服务运行用户 ./service.sh start ./service.sh status

如需先排查 agent.ini 是否正确,也可以临时用进程方式启动:

cd /home/dmdba/dmdem/agent ./start.sh /home/dmdba/dmdem/agent/agent.ini

启动后进入 DEM 的“监控 → 主机”,确认两个主机均显示连接正常。首次接入时,在主机操作菜单选择“配置网络”:DEM 访问 Agent 的地址填写各节点可访问 IP;集群内部通信地址也填写对应节点 IP。

若主机显示连接失败,优先检查 center_url、service_key、网络连通性以及各主机时间是否相差超过 5 分钟。

4. 在 DEM 中创建 MPP 部署任务

4.1 选择集群类型和主机

进入 DEM 的“部署”页面,新建部署任务:

  1. 填写部署名称和描述;
  2. 集群类型选择“大规模并行处理”;
  3. 在“环境准备”页面勾选两个已上线的主机;
  4. 进入“实例规划”页面,为两个主机各添加一个实例。

实例规划可参考下表:

主机 实例名 服务端口 MAL 端口 工作目录
192.168.1.101 MPP_01 5236 5336 /dmdata/mpp
192.168.1.102 MPP_02 5236 5337 /dmdata/mpp

“注册服务”按实际需要勾选。勾选后 DEM 会生成服务脚本,实例可随操作系统启动。

4.2 数据准备和 dm.ini

“数据准备”页面设置初始化参数。页大小、簇大小、字符集、大小写敏感等会影响数据库格式,两个节点必须保持一致。例如实验环境可统一设置:

参数 示例值
页大小 32 KB
簇大小 32 页
日志大小 512 MB
字符集 按现场规范选择
大小写敏感 按现场规范选择

接着进入 dm.ini 配置页面,重点核对每个实例的 INSTANCE_NAME、PORT_NUM 等实例参数。MPP 相关参数保持 DEM 自动生成的值即可,除非现场有明确的参数规范;MAL 通信端口在下一步的 dmmal.ini 中核对。

常用初始化参数可按下表在两个实例上统一填写,实际字符集、大小写敏感和密码以现场规范为准:

参数 示例值
页大小 32
簇大小 32
日志大小 512
字符集 GB18030
大小写敏感 Y
SYSDBA / SYSAUDITOR 密码 按实际要求设置

4.3 核对 dmmal.ini

dmmal.ini 用于配置 EP 节点之间的 MAL 通信。两个节点的配置内容应一致,至少包含两个 MAL_INST 块:

[MAL_INST1] MAL_INST_NAME = MPP_01 MAL_HOST = 192.168.1.101 MAL_PORT = 5336 MAL_INST_HOST = 192.168.1.101 MAL_INST_PORT = 5236 [MAL_INST2] MAL_INST_NAME = MPP_02 MAL_HOST = 192.168.1.102 MAL_PORT = 5337 MAL_INST_HOST = 192.168.1.102 MAL_INST_PORT = 5236

这里最容易填错的是 MAL_PORT 与 MAL_INST_PORT:前者是节点间 MAL 通信端口,后者是数据库服务端口。

MPP 不要求必须配置归档,因此 dmarch.ini 页面可以不勾选归档;是否开启仍应按备份和恢复要求决定。

4.4 选择服务器文件并执行

在“上传服务器文件”页面,选择与两个节点操作系统、CPU 架构匹配的 DM 服务器包;如果 DEM 已识别到可用的服务器资源,也可按页面提示选择已有资源。使用节点现有服务器文件时,确认选择的目录是 DM 安装目录下的 bin 目录,例如:

/home/dmdba/dmdbms/bin

不部署 DMAP 时,不勾选 DMAP 相关选项;是否注册服务按现场要求选择。

最后在详情总览逐项确认主机、实例名、目录和端口,点击“保存并执行”。任务执行完成后,点击“添加到监控”,后续可在 DEM 中查看集群状态和进行启停操作。

5. 部署后检查

先在两个节点检查实例进程和监听端口:

ps -ef | grep '[d]mserver' ss -lntp | egrep '5236|5336|5337'

连接任意一个 EP,检查当前节点序号和集群成员:

/home/dmdba/dmdbms/bin/disql SYSDBA/<SYSDBA密码>@192.168.1.101:5236
SELECT SF_GET_SELF_EP_SEQNO(); SELECT EP_SEQNO, INST_NAME FROM V$MPP_CFG_ITEM ORDER BY EP_SEQNO;

创建一张哈希分布表做基本验证:

CREATE USER MPP_TEST IDENTIFIED BY "<测试用户密码>"; GRANT DBA TO MPP_TEST; CREATE TABLE MPP_TEST.T_HASH ( ID INT PRIMARY KEY, NAME VARCHAR(30) ) DISTRIBUTED BY HASH(ID); INSERT INTO MPP_TEST.T_HASH VALUES (1, 'NODE_1'); INSERT INTO MPP_TEST.T_HASH VALUES (2, 'NODE_2'); COMMIT; SELECT * FROM MPP_TEST.T_HASH ORDER BY ID; CALL SP_GET_EP_COUNT('MPP_TEST', 'T_HASH');

再连接另一个 EP 执行查询:

/home/dmdba/dmdbms/bin/disql MPP_TEST/<测试用户密码>@192.168.1.102:5236
SELECT * FROM MPP_TEST.T_HASH ORDER BY ID;

两个节点均能查询到数据,且 V$MPP_CFG_ITEM 中能看到全部 EP,说明 MPP 的基本部署和通信正常。

也可以在两端分别确认数据库端口和 MAL 端口已经监听:

# 节点 1 ss -lntp | egrep '5236|5336' # 节点 2 ss -lntp | egrep '5236|5337'

6. 日常启停

优先使用 DEM 的集群管理页面执行启动和停止。若需要在操作系统上处理,先确认 DEM 实际生成的服务名称:

ls -l /home/dmdba/dmdbms/bin/DmService*

再按实际服务名操作,例如:

/home/dmdba/dmdbms/bin/DmServiceMPP_01 start /home/dmdba/dmdbms/bin/DmServiceMPP_01 stop

两个节点分别按实际服务名启动,例如:

# 节点 1 /home/dmdba/dmdbms/bin/DmServiceMPP_01 start # 节点 2 /home/dmdba/dmdbms/bin/DmServiceMPP_02 start

MPP 中任意一个 EP 停止后,集群无法正常提供完整的全局服务。因此维护时要按整个集群安排启停和验证。

参考资料

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服