注册
达梦DM8双节点DMDSC数据共享集群部署实施
专栏/技术分享/ 文章详情 /

达梦DM8双节点DMDSC数据共享集群部署实施

派仔 2026/08/21 303 0 0
摘要

1 项目概述

1.1 DMDSC 集群介绍

DMDSC(达梦数据共享集群)是达梦自研共享存储架构多实例集群,对标 Oracle RAC。架构核心特点:

  • 多数据库实例共用一份底层数据文件,存储全局共享;
  • 依靠 MAL 私有心跳网络完成缓存融合,保障多节点数据强一致性;
  • 依托 DMCSS 集群控制组件实现节点心跳检测、脑裂防护、故障自动切换;
  • 配套 DMASM 裸设备存储管理器,统一管理共享磁盘,无需操作系统格式化分区。

核心组件清单:

  • DMCSS:集群控制服务,仲裁节点状态、管控集群资源;
  • DMASM:共享磁盘管理服务,创建 / 管理磁盘组;
  • DMSERVER:数据库实例进程,双节点独立运行;
  • DMCSSM:集群监视器,可视化查看集群状态、执行人工干预操作。

1.2 本次部署架构

搭建 2 节点测试版 DSC 集群,网络分为业务外网、心跳私有网两套隔离链路;存储采用 iSCSI 网络共享磁盘,共计 4 块独立裸磁盘,分别为 VOTE 表决盘、DCR 集群注册表盘、DATA 数据盘、LOG 日志盘,四块磁盘相互独立,适配虚拟机测试场景。

2 整体资源详细规划

2.1 节点硬件与网络规划

节点标识 主机名 业务访问 IP MAL 心跳私有 IP 硬件配置
节点 1 dsc01 192.168.137.101 192.168.138.101 2 核 4G 内存、40G 本地系统盘
节点 2 dsc02 192.168.137.102 192.168.138.102 2 核 4G 内存、40G 本地系统盘

2.2 四块独立共享裸磁盘规划

磁盘名称 裸设备路径 容量大小 核心作用说明
VOTE 表决盘 /dev/sdb 2G 集群节点仲裁,防止集群脑裂
DCR 集群注册表盘 /dev/sdc 2G 存储集群全局配置、节点元数据、集群运行信息
DATA 数据磁盘 /dev/sdd 20G 存放系统表空间、用户数据文件、回滚段、临时文件
LOG 日志磁盘 /dev/sde 20G 存放联机重做日志、归档日志文件

2.3 端口分配表

服务组件 端口 用途
DMCSS 集群控制 9341 节点间集群心跳通信
MAL 缓存融合 11266 内存数据交互、缓存同步
节点 1 数据库 5236 应用业务连接端口
节点 2 数据库 5237 应用业务连接端口

2.4 用户与目录统一规范

  1. 运行用户:dmdba,用户组:dinstall;双节点 UID=1001、GID=1001 完全一致
  2. 达梦安装目录:/dm8
  3. DSC 集群配置文件目录:/dm8/dsc_config(双节点目录、文件完全同步)
  4. 统一用户密码:Dameng123

3 部署前置系统环境初始化

操作要求:两台节点逐条执行所有命令,系统参数必须完全一致

3.1 配置主机名与本地域名解析

  1. 设置主机名
    hostnamectl set-hostname dsc01
    hostnamectl set-hostname dsc02
  2. 编辑 hosts 文件(双节点内容相同)
    bash
    vi /etc/hosts

末尾追加

192.168.137.101 dsc01
192.168.137.102 dsc02
192.168.138.101 dsc01-pri
192.168.138.102 dsc02-pri

3.2 永久关闭防火墙与 SELinux

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

3.3 关闭透明大页(数据库部署强制优化项)

1. 修改 grub 启动参数

bash
vi /etc/sysconfig/grub

在GRUB_CMDLINE_LINUX参数结尾添加:transparent_hugepage=never

2. 重新生成启动配置并重启服务器生效

bash
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

3.4 内核参数优化

编辑 /etc/sysctl.conf,写入以下参数:
fs.file-max = 655360
kernel.shmall = 1073741824
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_timestamps = 1
生效命令:
sysctl -p

3.5 系统资源句柄限制

编辑 /etc/security/limits.conf,末尾追加:
ini
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536

3.6 时间同步配置(DSC 集群硬性要求,时间偏差<1 秒)

yum install -y chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources

3.7 创建统一运行用户

groupadd -g 1001 dinstall
useradd -u 1001 -g dinstall dmdba
passwd dmdba

3.8 配置 root、dmdba 双向 SSH 免密登录

两台节点互相生成密钥推送,实现无密码远程登录,方便配置文件同步。

4 iSCSI 共享存储部署与裸设备权限固化

4.1 iSCSI 服务端搭建(任选一台服务器部署)

  1. 安装 iscsi 服务端软件,划分 4 块独立逻辑卷:2G (VOTE)、2G (DCR)、20G (DATA)、20G (LOG);
  2. 创建 target 目标,对外开放四块独立共享磁盘。

4.2 双节点客户端挂载四块共享磁盘

yum install -y iscsi-initiator-utils
iscsiadm -m discovery -t st -p 存储服务端IP地址
iscsiadm -m node -l
fdisk -l | grep -E “sdb|sdc|sdd|sde”

4.3 UDEV 规则固化磁盘权限(永久生效)

DSC 必须保证四块裸设备归属 dmdba 用户,重启系统权限不重置:

1. 新建 udev 规则文件

vi /etc/udev/rules.d/90-dm-disk.rules

2. 写入规则内容

SUBSYSTEM==“block”,KERNEL==“sdb|sdc|sdd|sde”,OWNER=“dmdba”,GROUP=“dinstall”,MODE=“0660”

3. 重载规则并校验权限

udevadm trigger --type=devices --action=change
ls -l /dev/sdb /dev/sdc /dev/sdd /dev/sde

5 双节点达梦数据库软件静默安装

仅安装数据库程序,暂不初始化任何数据库实例

1. 上传 DM8 安装 ISO 包至两台节点相同目录;

2. dmdba 用户挂载镜像并静默安装:

mkdir -p /mnt/dmiso
mount DM8安装包.iso /mnt/dmiso
/mnt/dmiso/DMInstall.bin -q -i /dm8

3. 安装完成后切换 root 执行环境脚本:

/dm8/script/root/dm_service_shturl.cc/gl -t dmserver -h

6 DSC 集群核心配置文件编写

所有配置文件存放路径:/dm8/dsc_config,双节点文件内容保持一致

6.1 dmdcr_cfg.ini(集群全局资源配置主文件)

DCR_N_GRP = 3
DCR_VTD_PATH = /dev/sdb
DCR_OGUID = 63635

[GRP]
DCR_GRP_TYPE = CSS
DCR_GRP_NAME = GRP_CSS
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 5

[GRP_CSS]
DCR_EP_NAME = CSS0
DCR_EP_HOST = 192.168.138.101
DCR_EP_PORT = 9341

[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.138.102
DCR_EP_PORT = 9341

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 5

[GRP_ASM]
DCR_EP_NAME = ASM0
DCR_EP_HOST = 192.168.138.101
DCR_EP_PORT = 5836

[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_HOST = 192.168.138.102
DCR_EP_PORT = 5837

[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

6.2 dmasvrmal.ini(ASM 服务 MAL 心跳通信配置)

ini
[MAL_INST1]
MAL_HOST = 192.168.138.101
MAL_PORT = 11266
MAL_INST_NAME = ASM0
MAL_BUF_SIZE = 512
MAL_MAX_BUF_NUM = 2048

[MAL_INST2]
MAL_HOST = 192.168.138.102
MAL_PORT = 11266
MAL_INST_NAME = ASM1
MAL_BUF_SIZE = 512
MAL_MAX_BUF_NUM = 2048

6.3 dmdcr.ini(节点启动配置文件)

节点 1 配置:
ini
DMDCR_PATH = /dev/sdc
DMDCR_MAL_PATH = /dm8/dsc_config/dmasvrmal.ini
DMDCR_SEQNO = 0

DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /dm8/bin/dmasmsvr DCR_INI=/dm8/dsc_config/dmdcr.ini

DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /dm8/bin/dmserver path=/dm8/dsc_config/dm.ini dcr_ini=/dm8/dsc_config/dmdcr.ini
节点 2 仅修改参数:DMDCR_SEQNO = 1,其余内容完全相同。

6.4 dminit.ini(数据库初始化参数文件)

ini
db_name = DSC_DB
system_path = +DG_DATA
main_mir = +DG_DATA
ctl_path = +DG_DATA
log_path = +DG_LOG
arch_path = +DG_LOG/arch

[instance1]
instance_name = DSC01
port_num = 5236
mal_host = 192.168.138.101
mal_port = 11266

[instance2]
instance_name = DSC02
port_num = 5237
mal_host = 192.168.138.102
mal_port = 11266

7 集群资源初始化与 ASM 磁盘组创建

仅在节点 1 执行初始化操作

7.1 初始化 DCR 集群注册表、表决盘

su - dmdba
/dm8/bin/dmasmcmd script_file=/dm8/dsc_config/dmdcr_cfg.ini
image.png

7.2 双节点前台启动 CSS、ASM 服务

启动顺序:两台节点同步启动 CSS 服务,之后启动 ASM 服务
节点 1:
/dm8/bin/dmcss DCR_INI=/dm8/dsc_config/dmdcr.ini
/dm8/bin/dmasmsvr DCR_INI=/dm8/dsc_config/dmdcr.ini
节点 2 执行同款命令。

7.3 创建 ASM 磁盘组

image.png
image.png
image.png

7.4 初始化共享存储数据库

/dm8/bin/dminit control=/dm8/dsc_config/dminit.ini
执行完毕自动生成双节点 dm.ini 实例参数文件。

8 系统服务注册(root 用户执行)

将 CSS、ASM、数据库进程注册为系统服务,支持 systemctl 启停、开机自启
节点 1 注册示例:

注册CSS集群服务

/dm8/script/root/dm_service_shturl.cc/gl -t dmcss -p CSS0 -dm_ini /dm8/dsc_config/dmdcr.ini

注册ASM存储服务

/dm8/script/root/dm_service_shturl.cc/gl -t dmasmsvr -p ASM0 -dm_ini /dm8/dsc_config/dmdcr.ini

注册数据库实例服务

/dm8/script/root/dm_service_shturl.cc/gl -t dmserver -p DSC01 -dm_ini /dm8/dsc_config/dm.ini -dcr_ini /dm8/dsc_config/dmdcr.ini
节点 2 按照实例名称依次注册对应服务。

9 集群启停规范 + 集群监视器部署

9.1 集群启动顺序(严格遵循)

  1. 双节点启动 DMCSS 服务
    bash
    systemctl start DmCSSServiceCSS0
    image.png
    image.png

  2. 双节点启动 DMASM 服务
    bash
    systemctl start DmASMSvrServiceASM0
    image.png
    image.png

  3. 双节点启动数据库实例
    bash
    systemctl start DmServiceDSC01
    image.png

9.2 集群停止顺序(反向执行)

  1. 关闭两台节点数据库实例
  2. 关闭 ASM 存储服务
  3. 关闭 CSS 集群控制服务

9.3 DMCSSM 集群监视器

编写 dmcssm.ini 配置文件,任意节点启动监视器:
/dm8/bin/dmcssm ini_path=./dmcssm.ini
用途:实时查看节点在线状态、权重、故障告警,支持手动驱逐故障节点。

10 集群验证与高可用故障演练

10.1 基础集群状态查询

登录数据库执行 SQL 查看集群信息:
sql
– 查看DSC所有实例状态
SELECT * FROM VDSC_INSTANCE; -- 查看集群DCR配置信息 SELECT * FROM VDCR_INFO;
– 查看ASM磁盘组与磁盘
SELECT * FROM V$ASM_DISKGROUP;

10.2 共享数据一致性测试

节点 1 新建测试表、插入测试数据,节点 2 查询可实时读取数据,验证共享存储与缓存融合生效。

10.3 节点故障切换演练

  1. 手动停止节点 1 数据库服务;
  2. 监视器内查看节点 1 标记故障剔除,节点 2 独立承接所有业务访问;
  3. 重启节点 1 所有服务,节点自动重新加入集群,恢复双节点架构。

11 日常运维管理规范

  1. 集群状态查看:优先使用 dmcssm 监视器巡检;
  2. ASM 磁盘扩容:在线添加裸设备扩容 DG_DATA、DG_LOG 磁盘组,无需停机;
  3. 归档日志管理:归档存放于 DG_LOG 磁盘组,定期清理过期归档文件;
  4. 备份恢复:使用 RMAN 对共享集群执行全量 / 增量备份,故障场景完整恢复集群;
  5. 日常巡检项:时间同步、四块共享磁盘在线状态、磁盘使用率、MAL 链路状态、实例在线状态。

12 常见故障排查表

故障现象 根本原因 解决方案
CSS 进程启动失败 节点时间不同步、VOTE 盘权限错误、心跳网络不通 chrony 校准时间;修正 udev 磁盘权限;放行私有网段端口
MAL 缓存融合异常,数据不同步 MAL 配置 IP 写错、心跳网卡丢包 核对 dmasvrmal.ini 参数,检查内网链路质量
DCR 校验报错无法启动数据库 修改集群配置后未重新初始化 DCR 盘 清空 VOTE 盘、DCR 盘数据,重新执行 dmasmcmd 初始化集群资源
宕机节点无法重新加入集群 节点 SEQNO 序号错乱 调整 dmdcr.ini 序号,重启 CSS、ASM 服务
ASM 磁盘组挂载失败 裸设备被占用、磁盘归属 root 用户 结束占用进程;固化 udev 权限归属 dmdba

13 总结

本文完整覆盖 CentOS7 环境双节点 DMDSC 集群全流程部署,调整为四块独立共享磁盘架构(VOTE:2G、DCR:2G、DATA:20G、LOG:20G),四块磁盘物理隔离,日志与数据 IO 分离,性能更优。文档从前期系统优化、共享存储搭建、集群参数配置、实例初始化,到启停运维、故障切换、问题排查全部落地。文档适配测试环境交付,生产环境可升级为 SAN 光纤存储 + 三表决盘架构,满足政企核心业务数据库高可用运行需求。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服