注册
DEM V9.0.1 部署与 AFC 集群监控实战
专栏/技术分享/ 文章详情 /

DEM V9.0.1 部署与 AFC 集群监控实战

waytoofar 2026/09/04 104 0 0
摘要

DEM V9.0.1 部署与 AFC 集群监控实战

摘要

本次实操在 3 台 Kylin V10 主机上部署 DEM V9.0.1,并将既有 AFC_CLUSTER 三节点接入监控。实施采用独立 DEMDB 存储库,DEM 管理端部署在 dem-node-1,三台主机分别运行 dmagent。最终完成主机、数据库、AFC 概述、实例、拓扑和会话页面验证,并用独立临时表制造可观察的监控曲线。

  • 实验范围:Kylin V10 x86_64、DEM V9.0.1、AFC_CLUSTER 三节点
  • 实操日期:2026 年 8 月 24 日—25 日

1. 实验环境与部署设计

1.1 实际环境

对象 主机/IP 实际配置
DEM 管理节点 dem-node-1 / 192.0.2.11 DEM 目录 /dmdata/dem;Web 端口 32156;DEMDB 端口 5236
AFC 节点 1 dem-node-1 / 192.0.2.11 RAFT_01;数据库端口 1570;最终角色 LEADER
AFC 节点 2 dem-node-2 / 192.0.2.12 RAFT_02;数据库端口 1571;最终角色 FOLLOWER
AFC 节点 3 dem-node-3 / 192.0.2.13 RAFT_03;数据库端口 1572;最终角色 FOLLOWER
操作系统 三节点 Kylin Linux Advanced Server V10(Halberd),x86_64
DM 软件 三节点 /home/dmdba/dmdbms;构建号 03134284604-20260707-335949-20228
dmagent 三节点 /dmdata/dmagentAgent-V9.0.1.51914-2026.07.02-DEV

1.2 为什么使用独立 DEMDB

本次没有复用现有 AFC 业务实例。DEM 的元数据和监控数据写入独立 DEMDB,目录为 /dmdata/dem_repo/DEMDB,端口为 5236。这里的“独立”是指实例、目录和端口与 AFC 业务实例分开,可以降低管理数据与业务数据混用造成的误操作风险。DEMDB 与 DEM Server 仍和 RAFT_01 同驻 dem-node-1,没有消除主机级资源竞争与单点耦合,因此不能把本次实验架构等同于生产高可用方案。

数据流 本次实际路径
浏览器访问 Windows 浏览器 127.0.0.1:32157 → SSH 本地转发 → dem-node-1:32156 DEM Server
管理数据 DEM Server → DEMDB 127.0.0.1:5236
主机监控 受管主机 → 本机 dmagent → DEM Server → DEMDB
AFC 监控 RAFT 三实例 → 各节点本机 dmagent → DEM Server → DEMDB

官方原理:DEM 为 B/S 架构。DEM 服务器负责展示并把代理采集的数据写入存储库;dmagent 部署在受管主机上,采集主机和数据库信息并回传。[1]

2. 安装介质与环境检查

2.1 校验安装包

安装包为 dem_setup_20260702_x86_linux_64_9.0.1.zip。先在 Windows 端计算 SHA-256,再在 Linux 端复核。两端结果一致:

d3f3b2930d2484be30271241988c09930227ade59e5e6d02860bcf6362853e80

执行用户:第 1 条在 Windows PowerShell 中执行;第 2 条在 Linux 安装介质所在节点执行。

Get-FileHash -Algorithm SHA256 -LiteralPath 'D:\dem_setup_20260702_x86_linux_64_9.0.1.zip'
sha256sum /dmdata/dem_install/dem_setup_20260702_x86_linux_64_9.0.1.zip

Linux 端 SHA-256 复核,两端结果一致

图 DEM-04:Linux 端 SHA-256 复核,两端结果一致

2.2 检查介质结构与现有环境

解压后确认 setup.shsetup.pdf、官方 DEM.pdfdmagent.pdfdem.war 均存在。现有 AFC 数据目录保持不动;另外检查 5236 端口、/dmdata/dem_repo 目录和 /dmdata 磁盘空间,确保新存储库与业务实例隔离。

安装介质、安装脚本和官方文档结构

图 DEM-05:安装介质、安装脚本和官方文档结构

5236 端口、目标目录、既有 AFC 进程与磁盘检查

图 DEM-07:5236 端口、目标目录、既有 AFC 进程与磁盘检查

2.3 修复 setup.sh 执行权限

解压后的 setup.sh 没有执行位。现场只修复目标脚本,不对整个目录递归放宽权限。

执行用户:root。调整脚本属主和权限。

cd /dmdata/dem_install/dem_setup_20260702_x86_linux_64_9.0.1 chown dmdba:dinstall setup.sh chmod 750 setup.sh ls -l setup.sh

3. 创建独立 DEMDB 存储库

3.1 创建目录并初始化

执行用户:root。创建目录并设置属主、权限。

mkdir -p /dmdata/dem_repo chown dmdba:dinstall /dmdata/dem_repo chmod 750 /dmdata/dem_repo

执行用户:dmdba。初始化 DEMDB。以下为隐藏输入值的公开复现写法。

read -rsp 'DEMDB SYSDBA password: ' DEMDB_SYSDBA_PASSWORD; echo read -rsp 'DEMDB SYSAUDITOR password: ' DEMDB_SYSAUDITOR_PASSWORD; echo /home/dmdba/dmdbms/bin/dminit \ PATH=/dmdata/dem_repo \ DB_NAME=DEMDB \ INSTANCE_NAME=DEMDB \ PORT_NUM=5236 \ SYSDBA_PWD="$DEMDB_SYSDBA_PASSWORD" \ SYSAUDITOR_PWD="$DEMDB_SYSAUDITOR_PASSWORD" unset DEMDB_SYSDBA_PASSWORD DEMDB_SYSAUDITOR_PASSWORD

独立 DEMDB 初始化成功

图 DEM-08:独立 DEMDB 初始化成功(原图口令已像素化)

3.2 调整并核验 dm.ini

执行用户:dmdba。备份、修改并核验本实例 dm.ini

DM_INI=/dmdata/dem_repo/DEMDB/dm.ini cp -p "$DM_INI" "${DM_INI}.before_dem_$(date +%Y%m%d_%H%M%S)" sed -ri 's/^[[:space:]]*MEMORY_POOL[[:space:]]*=.*/MEMORY_POOL = 200/' "$DM_INI" sed -ri 's/^[[:space:]]*BUFFER[[:space:]]*=.*/BUFFER = 1000/' "$DM_INI" sed -ri 's/^[[:space:]]*SORT_BUF_SIZE[[:space:]]*=.*/SORT_BUF_SIZE = 50/' "$DM_INI" grep -E '^[[:space:]]*(PORT_NUM|MEMORY_POOL|BUFFER|SORT_BUF_SIZE)[[:space:]]*=' "$DM_INI"

最终确认的 4 个参数如下。配置前已保留带时间戳的备份。

参数 最终值 作用说明
PORT_NUM 5236 DEMDB 独立监听端口
MEMORY_POOL 200 内存池大小,单位按 DM 参数定义
BUFFER 1000 数据缓冲区配置
SORT_BUF_SIZE 50 排序缓冲区配置

备份并调整 DEMDB 的 dm.ini 关键参数

图 DEM-09:备份并调整 DEMDB 的 dm.ini 关键参数

3.3 启动与验证

执行用户:dmdba。启动 DEMDB,并通过 DIsql 验证。

nohup /home/dmdba/dmdbms/bin/dmserver \ /dmdata/dem_repo/DEMDB/dm.ini \ > /dmdata/dem_repo/DEMDB/dmserver_demdb.log 2>&1 &
read -rsp 'DEMDB SYSDBA password: ' DEMDB_SYSDBA_PASSWORD; echo /home/dmdba/dmdbms/bin/disql \ "SYSDBA/${DEMDB_SYSDBA_PASSWORD}@127.0.0.1:5236" <<'SQL' SELECT NAME, INSTANCE_NAME, HOST_NAME, STATUS$, MODE$ FROM V$INSTANCE; SELECT PARA_NAME, PARA_VALUE, FILE_VALUE FROM V$DM_INI WHERE PARA_NAME IN ('PORT_NUM','MEMORY_POOL','BUFFER','SORT_BUF_SIZE') ORDER BY PARA_NAME; EXIT; SQL unset DEMDB_SYSDBA_PASSWORD

DEMDB 启动与参数验证结果

图 DEM-10:DEMDB 处于 OPEN/NORMAL,端口与参数核验通过

4. 安装并启动 DEM V9.0.1

4.1 运行一体化安装器

执行用户:dmdba。运行一体化安装器。

cd /dmdata/dem_install/dem_setup_20260702_x86_linux_64_9.0.1 ./setup.sh --cli
安装项 本次实际值
安装目录 /dmdata/dem
DEM Web 端口 32156
进程管理 手动启动
存储库地址 127.0.0.1:5236
自定义 JDBC URL jdbc:dm://127.0.0.1:5236
安装前检查 首次 6/7;补全 JDBC URL 后 7/7

安装前检查通过及配置摘要

图 DEM-12:安装前检查 7/7 通过及配置摘要

DEM 安装完成摘要

图 DEM-13:DEM 安装完成,显示目录、端口和数据库连接摘要

4.2 启动 DEM Server

执行用户:dmdba。启动 DEM Server 并检查端口、HTTP 状态。

unset JRE_HOME /dmdata/dem/bin/start.sh
ss -lntp | grep ':32156' curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:32156/

start.sh 使用 32156 端口并启动 Tomcat

图 DEM-14A:start.sh 使用 32156 端口并启动 Tomcat

32156 端口处于 LISTEN

图 DEM-14B:32156 端口处于 LISTEN

5. 打通浏览器访问与管理员登录

5.1 使用 SSH 本地转发

Windows 客户端不能直接路由到 192.0.2.11:32156。现场通过 192.0.2.11:12001 建立本地转发,浏览器访问本机 32157

执行用户:Windows 当前登录用户。在 PowerShell 中保持 SSH 隧道会话运行。

ssh -N -o ExitOnForwardFailure=yes ` -L 127.0.0.1:32157:127.0.0.1:32156 ` -p 12001 root@192.0.2.11

首次转发被拒绝。服务端最终按最小范围启用本地转发,并完成备份、配置语法、服务状态和有效参数复核。

执行用户:root。修改跳板机的 /etc/ssh/sshd_config。目标配置行如下。

AllowTcpForwarding local
SSHD_CONFIG=/etc/ssh/sshd_config cp -p "$SSHD_CONFIG" "${SSHD_CONFIG}.bak_$(date +%Y%m%d_%H%M%S)" sed -ri 's/^[[:space:]]*AllowTcpForwarding[[:space:]]+.*/AllowTcpForwarding local/' "$SSHD_CONFIG" sshd -t systemctl reload sshd systemctl is-active sshd sshd -T | grep -Ei 'allowtcpforwarding|disableforwarding|permitopen|permitlisten'

通过本地转发访问 DEM V9.0.1 登录页

图 DEM-15:通过本地转发访问 DEM V9.0.1 登录页

5.2 处理管理员锁定

多次试错后,admin 账号失败次数达到阈值。现场停止继续猜测,在备份账号记录后,按当前版本的实际密码处理机制受控恢复,随后成功登录。

风险边界:恢复过程涉及 DEM 内部表和版本相关实现,不作为公共操作步骤。生产环境应优先使用受支持的密码重置流程或联系达梦技术支持。

成功登录后的开发功能入口页

图 DEM-16:成功登录后的“开发”功能入口页

6. 部署三节点 dmagent

6.1 选择实际可用的 agent 来源

现场最终没有继续使用解压异常的临时 ZIP,而是从各节点现有 DM 安装目录 /home/dmdba/dmdbms/tool/dmagent 复制到 /dmdata/dmagent

现场先确认并删除此前失败解压留下的 /dmdata/dmagent 临时目录,再复制同版本目录。以下是对该动作整理后的安全等价写法,可避免目标已存在时形成 /dmdata/dmagent/dmagent 嵌套目录。

执行用户:root。只在确认 /dmdata/dmagent 是本次失败解压形成的临时目录后删除。

AGENT_SRC=/home/dmdba/dmdbms/tool/dmagent AGENT_DST=/dmdata/dmagent test "$(readlink -f "$AGENT_DST")" = "/dmdata/dmagent" || exit 1 ls -ld "$AGENT_DST" # 人工确认该目录仅为本次失败解压留下的临时 agent 目录后再执行: rm -rf -- "$AGENT_DST" cp -a "$AGENT_SRC" "$AGENT_DST" ls -ld "$AGENT_DST"

DM 安装目录中的 dmagent 完整文件

图 DEM-17(准备):DM 安装目录中的 dmagent 完整文件

6.2 配置 agent.ini

执行用户:root。备份、修改并核验三台主机各自的 agent.ini

AGENT_INI=/dmdata/dmagent/agent.ini cp -p "$AGENT_INI" "${AGENT_INI}.before_dem_$(date +%Y%m%d_%H%M%S)" sed -ri 's#^[[:space:]]*center_url[[:space:]]*=.*#center_url = http://192.0.2.11:32156#' "$AGENT_INI" sed -ri 's/^[[:space:]]*service_enable[[:space:]]*=.*/service_enable = true/' "$AGENT_INI" sed -ri 's/^[[:space:]]*gather_enable[[:space:]]*=.*/gather_enable = true/' "$AGENT_INI" awk -F= '/^[[:space:]]*(center_url|service_enable|gather_enable)[[:space:]]*=/{print $0}' "$AGENT_INI"

复制 dmagent 并核对 agent.ini 核心配置

图 DEM-17A:复制 dmagent 并核对 agent.ini 核心配置

6.3 安装 service key 并启动

执行用户:root。以隐藏输入方式传入 service key,再启动 dmagent。

cd /dmdata/dmagent read -rsp 'DEM service key: ' DEM_SERVICE_KEY; echo ./start.sh INSTALL_SERVICE_KEY "$DEM_SERVICE_KEY" unset DEM_SERVICE_KEY ./start.sh /dmdata/dmagent/agent.ini

成功日志包含 Agent-V9.0.1.51914-2026.07.02-DEV 和“System is ready.”。

6.4 处理各节点 Java 路径差异

dem-node-1 使用 /dmdata/dem/jdk/bin/java;dem-node-2 和 dem-node-3 使用 /home/dmdba/dmdbms/jdk/bin/java。没有直接修改全局 Java,而是为 dmagent 启动脚本设置可用的绝对路径。

执行用户:root。逐节点发现可用 Java,备份并调整启动脚本,然后核验语法和进程。

cd /dmdata/dmagent cp -p start.sh start.sh.bak_java JAVA_BIN=$(for p in /usr/bin/java /usr/local/bin/java /home/dmdba/dmdbms/jdk/bin/java /home/dmdba/dmdbms/jdk/jre/bin/java /usr/lib/jvm/*/bin/java; do [ -x "$p" ] && readlink -f "$p" && break; done) test -n "$JAVA_BIN" || { echo 'Java not found'; exit 1; } sed -i "/^[[:space:]]*JAVA_EXE_FULL_PATH[[:space:]]*=[[:space:]]*\"\"/a\\JAVA_EXE_FULL_PATH=\"$JAVA_BIN\"" start.sh bash -n start.sh "$JAVA_BIN" -version ps -ef | grep '[D]agent.home=/dmdata/dmagent' ps -ef | grep '[j]ava' | grep '/dmdata/dmagent'

dem-node-1 首台主机正常接入

图 DEM-18:dem-node-1 首台主机正常接入

三台主机均已在线且连接正常

图 DEM-19:dem-node-1、dem-node-2、dem-node-3 均已在线、连接正常

7. 将既有 AFC_CLUSTER 纳入监控

7.1 补齐主机内外网信息

3 个 dmagent 在线后,数据库实例页面的主机下拉框仍为空。主机详情显示“内外网未配置”。本次两类通信均按规划使用同一可达管理地址,因此把各节点内网 IP 与外网 IP 都设置为对应管理 IP。

主机 内网 IP 外网 IP
dem-node-1 192.0.2.11 192.0.2.11
dem-node-2 192.0.2.12 192.0.2.12
dem-node-3 192.0.2.13 192.0.2.13

三台主机的网络配置入口

图 DEM-19B:三台主机的网络配置入口

官方依据:内网 IP 用于 agent 连接数据库及集群内部通信,外网 IP 用于 DEM 中心与 agent 通信。只有当两类通信确实共用同一可达地址时才可填写同一值;多网段环境应按真实网络规划填写。[1]

7.2 手工创建 AFC 三实例

本次 AFC 页面明确提示“AFC 暂不支持扫描实例添加”,因此最终选择“创建实例添加”,逐个录入 3 个节点。这只是本次 V9.0.1 环境的实际界面结果,不扩大为所有版本的产品结论。

实例 地址 站点类型 生命周期策略
RAFT_01 192.0.2.11:1570 DB 关闭自动启动
RAFT_02 192.0.2.12:1571 DB 关闭自动启动
RAFT_03 192.0.2.13:1572 DB 关闭自动启动

三节点 DPC_MODE 均为 0;据此把站点类型校正为 DB,用户随后确认处理完成。上传文档未单独保存校正后的站点类型截图,早期把 RAFT_01 误设为 BP 的过渡截图已排除。AFC 的 Leader/Follower 角色不能直接映射为 DPC 的 BP/DB 类型。

自动启动保持关闭,服务名和启动命令留空。DEM 只负责监控,不接管既有 AFC 的启停。

数据库监控的集群添加入口

图 DEM-20(前置):数据库监控的集群添加入口

AFC_CLUSTER 三节点纳管成功

图 DEM-20:AFC_CLUSTER 三节点纳管成功

8. AFC 监控验证与曲线测试

8.1 核验 RAFT 角色

SELECT STATE, LEADER FROM V$RLOG_RAFT_INFO;

数据库侧确认 RAFT_01 为 LEADER,RAFT_02 和 RAFT_03 为 FOLLOWER。按达梦官方对 RAFT 角色的一般说明,通常存在 1 个 Leader,其余节点处于 Follower;Candidate 是选举过程中的临时角色。[4]

AFC 概述中的 RAFT 状态与角色数

图 DEM-21:AFC 概述显示 RAFT VALID=Y、LEADER=1、FOLLOWER=2

判断边界:RAFT VALID=Y 是本次页面实测值。结合三实例正常、拓扑与会话采集成功,可确认本次监控接入有效;不能仅凭该字段扩展为完整健康认证。

8.2 制造可控监控曲线

为了观察备库重演、主备时延、事务、磁盘和网络曲线,在 RAFT_01 上创建独立临时表。测试使用独立、可清理的数据对象,没有停库、切换角色、修改 AFC 参数或制造真实故障。

执行用户:dmdba。在 RAFT_01 上执行临时负载。以下循环 90 轮,每轮结束后休眠 1 秒,总耗时会略大于 90 秒。

CREATE TABLE DEM_AFC_CURVE_TEST ( ID BIGINT, PAYLOAD VARCHAR(3000), TS TIMESTAMP );
read -rsp 'AFC SYSDBA password: ' AFC_SYSDBA_PASSWORD; echo for i in $(seq 1 90) do /home/dmdba/dmdbms/bin/disql \ "SYSDBA/${AFC_SYSDBA_PASSWORD}@192.0.2.11:1570" \ >/dev/null 2>&1 <<'SQL' BEGIN FOR j IN 1..200 LOOP INSERT INTO DEM_AFC_CURVE_TEST VALUES (j, RPAD('A',3000,'A'), SYSDATE); END LOOP; COMMIT; DELETE FROM DEM_AFC_CURVE_TEST; COMMIT; END; / EXIT; SQL sleep 1 done unset AFC_SYSDBA_PASSWORD

事务、磁盘写和网络等资源曲线出现明显波动

图 DEM-23:事务、磁盘写和网络等资源曲线出现明显波动

本次实验环境中的三节点追平较快,因此时延和积压接近 0 并不矛盾。验证目标是确认采集链路和曲线响应,而不是人为制造长时间积压。

8.3 核验实例、拓扑与会话

AFC 实例页显示三实例状态与主备角色

图 DEM-24:AFC 实例页显示三实例状态与主备角色

AFC 三节点拓扑关系

图 DEM-25:AFC 三节点拓扑关系

数据库侧查询 RAFT 角色与会话数

图 DEM-26A:数据库侧查询 RAFT 角色与会话数

三节点会话页显示 ACTIVE、IDLE 与 dmagent 采集 SQL

图 DEM-26:三节点会话页显示 ACTIVE/IDLE 与 dmagent 采集 SQL

9. 总结

  • DEM V9.0.1 完成安装,32156 监听,根路径 HTTP 状态为 200
  • dem-node-1、dem-node-2、dem-node-3 三台主机均通过同版本 dmagent 接入。
  • AFC_CLUSTER 的 RAFT_01、RAFT_02、RAFT_03 均进入数据库监控列表。
  • AFC 概述、实例、拓扑和会话页面均产生可核对数据。
  • 受控临时表负载使多项时序指标产生明显波动,监控采集链路得到验证。
  • 本次没有执行故障切换、停库、AFC 参数修改、真实告警制造或 DEM 自动启停接管。

参考资料

[1] DMDEM 达梦企业管理系统使用手册。达梦官方在线手册,访问日期:2026 年 8 月 25 日。用于架构、dmagent、网络信息、数据库监控和 AFC 大盘说明。

[2] DMDEM 版本说明。达梦官方页面。V9.0.1 发版时间为 2026 年 5 月,并记录首页、时序图、实例页和拓扑图等更新。

[3] DMDEM 常见问题。达梦官方 FAQ。用于 Java 路径和 service key 的通用依据。

[4] 监视器。达梦官方文档。仅用于解释 Leader、Follower、Candidate 的一般 RAFT 角色含义。

达梦社区地址:https://eco.dameng.com

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服