注册
单机器部署两节点DMDSC集群实践
技术分享/ 文章详情 /

单机器部署两节点DMDSC集群实践

歪比巴卜 2026/07/31 162 0 0

DMDSC 数据共享集群部署操作


一、版本介绍

本文档记录了基于达梦数据库 DM8 的 DMDSC两节点数据共享集群的完整部署过程。本次部署采用基于 DMASM 的 DMDSC 架构,使用块设备作为共享存储,通过 DMASM 管理共享磁盘,实现了两节点间的数据共享与高可用。

数据库版本: dm8_20250930_x86_kylin10_sp1_64.iso

操作系统版本:Kylin-Server-10-SP2-x86-Release-Build09-20210524

二、环境规划

2.1 硬件环境

项目 配置
服务器数量 2 台(虚拟机)
CPU 4 核
内存 8 GB
系统盘 30 GB
共享数据盘 4 块(DCR 1G + VOTE 1G + DMDATA 20G + DMLOG 10G)
网卡 2 块

2.2 节点信息

角色 实例名称 IP 地址 说明
节点 0 DSC01 192.168.52.131(下面简称为131机器) 控制节点(Control Node)
节点 1 DSC02 192.168.52.135(下面简称为135机器) 普通节点(Normal Node)

2.3 集群服务端口规划

服务 节点 端口
CSS DSC01(CSS0) 9836
CSS DSC02(CSS1) 9837
ASM DSC01(ASM0) 5836
ASM DSC02(ASM1) 5837
DSC DSC01 6636
DSC DSC02 6637
MAL(ASM) DSC01 4836
MAL(ASM) DSC02 4837
MAL(DB) DSC01 6536
MAL(DB) DSC02 6537

2.4 共享磁盘规划

磁盘用途 设备名 大小 SCSI ID 说明
DCR 盘 /dev/sdb 1 GB 36000c290f42831688ccdde5bfc8ebe22 存储集群注册信息
VOTE 盘 /dev/sdc 1 GB 36000c29777e550b0a0015e0f8938e209 表决磁盘,用于集群仲裁
DMDATA 盘 /dev/sdd 20 GB 36000c2918edb917c5260302f26a3d16b 存储业务数据
DMLOG 盘 /dev/sde 10 GB 36000c29efd9efcb4c123c7a051e69b8a 存储重做日志

三、部署步骤

3.1 用户和组创建

两台机器均需执行(以 root 用户操作):

# 创建用户组 groupadd dmdba # 创建用户并加入组 useradd -g dmdba dmdba # 设置密码 passwd dmdba

3.2 系统环境配置

两台机器均需执行(以 root 用户操作):

# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭 SELinux vi /etc/selinux/config # 把SELINUX=enforcing 修改为 SELINUX=disabled

3.3 目录规划

两台机器均需执行(以 dmdba 用户操作):

目录 用途
/home/dmdba/dmdsc DMDSC 环境主目录
/home/dmdba/dmdsc/bin DM 执行码和工具存放目录
/home/dmdba/dmdsc/data/DSC01 节点0 配置文件目录(131机器)
/home/dmdba/dmdsc/data/DSC02 节点1 配置文件目录(135机器)
# 在 131 机器上执行 mkdir -p /home/dmdba/dmdsc/bin mkdir -p /home/dmdba/dmdsc/data/DSC01 # 在 135 机器上执行 mkdir -p /home/dmdba/dmdsc/bin mkdir -p /home/dmdba/dmdsc/data/DSC02

3.4 UDEV 磁盘固定配置

任意一台机器执行。

步骤一:获取磁盘 SCSI ID

/usr/lib/udev/scsi_id -g -u /dev/sdb # 输出DCR磁盘序列号 /usr/lib/udev/scsi_id -g -u /dev/sdc # 输出VOTE磁盘序列号 /usr/lib/udev/scsi_id -g -u /dev/sdd # 输出DMDATA磁盘序列号 /usr/lib/udev/scsi_id -g -u /dev/sde # 输出DDMLOG磁盘序列号

输出:屏幕截图 20260721 165827.png

步骤二:创建 UDEV 规则文件

编辑 /etc/udev/rules.d/66-dmdevices.rules

vi /etc/udev/rules.d/66-dmdevices.rules

两台机器内容完全相同:

## DCR 磁盘 KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", SYMLINK+="DCR", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; mkdir -p /dev_DSC2; ln -s /dev/DCR /dev_DSC2/DCR'" ## VOTE 磁盘 KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", SYMLINK+="VOTE", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/VOTE /dev_DSC2/VOTE'" ## DMDATA 磁盘 KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", SYMLINK+="DMDATA", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMDATA /dev_DSC2/DMDATA'" ## DMLOG 磁盘 KERNEL=="sd*", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESULT=="此处填写你的序列号", SYMLINK+="DMLOG", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/$name; ln -s /dev/DMLOG /dev_DSC2/DMLOG; chown -R dmdba:dmdba /dev_DSC2'"

步骤三:重新加载规则并验证

udevadm control --reload-rules && udevadm trigger && udevadm settle # 验证软链接 ls -lth /dev_DSC2/

验证输出:

屏幕截图 20260721 165658.png

3.5 创建集群配置文件 DMDCR_CFG.INI

仅在 DSC01 机器(131机器)执行(以 dmdba 用户操作):

vi /home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI

文件内容:

DCR_N_GRP = 3 DCR_VTD_PATH = /dev_DSC2/VOTE DCR_OGUID = 1071107589 [GRP] DCR_GRP_TYPE = CSS DCR_GRP_NAME = GRP_CSS DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 60 [GRP_CSS] DCR_EP_NAME = CSS0 DCR_EP_HOST = 192.168.52.131 DCR_EP_PORT = 9836 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 192.168.52.135 DCR_EP_PORT = 9837 [GRP] DCR_GRP_TYPE = ASM DCR_GRP_NAME = GRP_ASM DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 60 [GRP_ASM] DCR_EP_NAME = ASM0 DCR_EP_SHM_KEY = 64735 DCR_EP_SHM_SIZE = 512 DCR_EP_HOST = 192.168.52.131 DCR_EP_PORT = 5836 DCR_EP_ASM_LOAD_PATH = /dev_DSC2 [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 54736 DCR_EP_SHM_SIZE = 512 DCR_EP_HOST = 192.168.52.135 DCR_EP_PORT = 5837 DCR_EP_ASM_LOAD_PATH = /dev_DSC2 [GRP] DCR_GRP_TYPE = DB DCR_GRP_NAME = GRP_DSC DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 60 [GRP_DSC] DCR_EP_NAME = DSC01 DCR_EP_SEQNO = 0 DCR_EP_PORT = 6636 [GRP_DSC] DCR_EP_NAME = DSC02 DCR_EP_SEQNO = 1 DCR_EP_PORT = 6637

3.6 初始化共享磁盘(创建 ASM 磁盘)

仅在 131机器执行(以 dmdba 用户操作):

cd /home/dmdba/dmdsc/bin ./dmasmcmd

在 DMASMCMD 交互界面中执行:

ASM> create dcrdisk '/dev_DSC2/DCR' 'DCR'
ASM> create votedisk '/dev_DSC2/VOTE' 'VOTE'
ASM> create asmdisk '/dev_DSC2/DMDATA' 'DMDATA'
ASM> create asmdisk '/dev_DSC2/DMLOG' 'DMLOG'
ASM> init dcrdisk '/dev_DSC2/DCR' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI' identified by 'DCRpsd_123'
ASM> init votedisk '/dev_DSC2/VOTE' from '/home/dmdba/dmdsc/data/DSC01/DMDCR_CFG.INI'

输出:
屏幕截图 20260721 165752.png

3.7 创建 DMASVRMAL.INI

两台机器内容完全相同(以 dmdba 用户操作):

131 机器:

vi /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini

135 机器:

vi /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini

文件内容:

[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 192.168.52.131 MAL_PORT = 4836 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 192.168.52.135 MAL_PORT = 4837

3.8 创建 DMDCR.INI

DSC01 机器(131):

vi /home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_PATH = /dev_DSC2/DCR DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini DMDCR_SEQNO = 0 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver path=/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini DMDCR_LINK_CHECK_IP=192.168.52.131

须为 131机器的 DMSERVER、DMASMSVR、DMCSS 赋予 ping 权限:

sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmasmsvr
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmcss

DSC02 机器(135):

vi /home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_PATH = /dev_DSC2/DCR DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini DMDCR_SEQNO = 1 DMDCR_ASM_RESTART_INTERVAL = 0 DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini DMDCR_DB_RESTART_INTERVAL = 0 DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/dmserver path=/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini DMDCR_LINK_CHECK_IP=192.168.1.88

须为 135机器的 DMSERVER、DMASMSVR、DMCSS 赋予 ping 权限:

sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmasmsvr
sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/dmcss

3.9 启动 DMCSS 服务

DSC01 机器(131):

cd /home/dmdba/dmdsc/bin ./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

输出:

屏幕截图 20260721 165918.png

DSC02 机器(135):

cd /home/dmdba/dmdsc/bin ./dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

输出:

屏幕截图 20260721 165949.png

3.10 启动 DMASMSVR 服务

DSC01 机器(131):

./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

输出:

屏幕截图 20260721 170036.png

DSC02 机器(135):

./dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

输出:

屏幕截图 20260721 170106.png

3.11 创建DATA磁盘组和LOG磁盘组

仅在 DSC01 机器(131)执行(以 dmdba 用户操作):

./dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

在交互界面中执行:

ASM> CREATE DISKGROUP DMDATA asmdisk '/dev_DSC2/DMDATA'
ASM> CREATE DISKGROUP DMLOG asmdisk '/dev_DSC2/DMLOG'

输出:

屏幕截图 20260721 170132.png

3.12 初始化数据库

步骤一:创建 dminit.ini 配置文件

仅在 131 机器执行(以 dmdba 用户操作):

vi /home/dmdba/dmdsc/data/DSC01/dminit.ini

文件内容:

DB_NAME= dsc2 SYSTEM_PATH= +DMDATA/data SYSTEM= +DMDATA/data/dsc2/system.dbf SYSTEM_SIZE= 128 ROLL= +DMDATA/data/dsc2/roll.dbf ROLL_SIZE= 128 MAIN= +DMDATA/data/dsc2/main.dbf MAIN_SIZE= 128 CTL_PATH= +DMDATA/data/dsc2/dm.ctl LOG_SIZE= 2048 DCR_PATH= /dev_DSC2/DCR DCR_SEQNO= 0 AUTO_OVERWRITE= 2 PAGE_SIZE = 16 EXTENT_SIZE = 16 SYSDBA_PWD=DMdba_123 SYSAUDITOR_PWD=DMauditor_123 [DSC01] CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf PORT_NUM = 6636 MAL_HOST= 192.168.52.131 MAL_PORT= 6536 LOG_PATH= +DMLOG/log/DSC01_log1.log LOG_PATH= +DMLOG/log/DSC01_log2.log [DSC02] CONFIG_PATH= /home/dmdba/dmdsc/data/DSC02/DSC02_conf PORT_NUM = 6637 MAL_HOST= 192.168.52.135 MAL_PORT= 6537 LOG_PATH= +DMLOG/log/DSC02_log1.log LOG_PATH= +DMLOG/log/DSC02_log2.log

步骤二:执行初始化

./dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini

输出:

屏幕截图 20260721 170152.png

步骤三:复制配置文件到 135 机器

scp -r /home/dmdba/dmdsc/data/DSC02/* dmdba@192.168.52.135:/home/dmdba/dmdsc/data/DSC02/

屏幕截图 20260721 170220.png

3.13 启动数据库服务器

DSC01 机器(131):

cd /home/dmdba/dmdsc/bin ./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini

输出关键信息:

图片1.png

DSC02 机器(135):

cd /home/dmdba/dmdsc/bin ./dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini

输出关键信息:

图片2.png

3.14 配置并启动 DMCSSM 监视器

在 DSC01 机器(131)执行(以 dmdba 用户操作):

创建 DMCSSM.INI 配置文件:

vi /home/dmdba/dmdsc/data/dmcssm.ini
CSSM_OGUID = 1071107589 CSSM_CSS_IP = 192.168.52.131:9836 CSSM_CSS_IP = 192.168.52.135:9837 CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log CSSM_LOG_FILE_SIZE = 32 CSSM_LOG_SPACE_LIMIT = 0

创建日志目录并启动监视器:

mkdir -p /home/dmdba/dmdsc/data/cssm_log ./dmcssm /home/dmdba/dmdsc/data/dmcssm.ini

输出:

屏幕截图 20260727 150330.png


四、部署验证

4.1 监视器状态验证

在 DMCSSM 监视器提示符下输入 show,验证集群状态:

图片3.png

所有三个组(GRP_CSS、GRP_ASM、GRP_DSC)的全部节点状态均为 OPENWORKING,集群部署成功。

4.2 注意事项

  1. 磁盘固定:推荐使用 UDEV 方式固定共享磁盘,并将磁盘链接到独立目录(如 /dev_DSC2/),避免 DMDSC 启动时扫描到无关磁盘导致启动失败。
  2. 配置一致性:两台机器的 dmasvrmal.ini 内容必须完全相同;dmdcr.iniDMDCR_SEQNO 不同。
  3. 启动顺序:按照 DMCSS → DMASMSVR → DMSERVER → DMCSSM 的顺序执行。
  4. 控制节点:CSS0(131机器)被自动选举为控制节点,负责集群协调管理。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服