使用用 DEM 部署两节点MPP。两个节点组成同一个数据库系统,都可以提供数据库服务。部署时由 DEM 统一下发任务,在两个节点创建实例并生成 MPP 所需配置文件。
本文以两个 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 │
└───────────┘ └───────────┘
两个节点都先安装相同版本的 DM 软件,只安装软件,不在本次 MPP 数据目录中提前执行 dminit 创建单机库。DEM 后续会按实例规划初始化数据库、生成 MPP 配置并注册服务。
以下操作在两个节点都执行。以 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 实例及相关控制文件。
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。
DEM 通过 DMAgent 获取主机信息并下发部署任务,两个 MPP 节点都要部署 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 包。
两端编辑 /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。
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 分钟。
进入 DEM 的“部署”页面,新建部署任务:
实例规划可参考下表:
| 主机 | 实例名 | 服务端口 | MAL 端口 | 工作目录 |
|---|---|---|---|---|
192.168.1.101 |
MPP_01 |
5236 |
5336 |
/dmdata/mpp |
192.168.1.102 |
MPP_02 |
5236 |
5337 |
/dmdata/mpp |
“注册服务”按实际需要勾选。勾选后 DEM 会生成服务脚本,实例可随操作系统启动。
“数据准备”页面设置初始化参数。页大小、簇大小、字符集、大小写敏感等会影响数据库格式,两个节点必须保持一致。例如实验环境可统一设置:
| 参数 | 示例值 |
|---|---|
| 页大小 | 32 KB |
| 簇大小 | 32 页 |
| 日志大小 | 512 MB |
| 字符集 | 按现场规范选择 |
| 大小写敏感 | 按现场规范选择 |
接着进入 dm.ini 配置页面,重点核对每个实例的 INSTANCE_NAME、PORT_NUM 等实例参数。MPP 相关参数保持 DEM 自动生成的值即可,除非现场有明确的参数规范;MAL 通信端口在下一步的 dmmal.ini 中核对。
常用初始化参数可按下表在两个实例上统一填写,实际字符集、大小写敏感和密码以现场规范为准:
| 参数 | 示例值 |
|---|---|
| 页大小 | 32 |
| 簇大小 | 32 |
| 日志大小 | 512 |
| 字符集 | GB18030 |
| 大小写敏感 | Y |
| SYSDBA / SYSAUDITOR 密码 | 按实际要求设置 |
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 页面可以不勾选归档;是否开启仍应按备份和恢复要求决定。
在“上传服务器文件”页面,选择与两个节点操作系统、CPU 架构匹配的 DM 服务器包;如果 DEM 已识别到可用的服务器资源,也可按页面提示选择已有资源。使用节点现有服务器文件时,确认选择的目录是 DM 安装目录下的 bin 目录,例如:
/home/dmdba/dmdbms/bin
不部署 DMAP 时,不勾选 DMAP 相关选项;是否注册服务按现场要求选择。
最后在详情总览逐项确认主机、实例名、目录和端口,点击“保存并执行”。任务执行完成后,点击“添加到监控”,后续可在 DEM 中查看集群状态和进行启停操作。
先在两个节点检查实例进程和监听端口:
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'
优先使用 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 停止后,集群无法正常提供完整的全局服务。因此维护时要按整个集群安排启停和验证。
文章
阅读量
获赞
