DMDSC(达梦数据共享集群)是达梦自研共享存储架构多实例集群,对标 Oracle RAC。架构核心特点:
搭建 2 节点测试版 DSC 集群,网络分为业务外网、心跳私有网两套隔离链路;存储采用 iSCSI 网络共享磁盘,共计 4 块独立裸磁盘,分别为 VOTE 表决盘、DCR 集群注册表盘、DATA 数据盘、LOG 日志盘,四块磁盘相互独立,适配虚拟机测试场景。
节点标识 主机名 业务访问 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 本地系统盘
磁盘名称 裸设备路径 容量大小 核心作用说明
VOTE 表决盘 /dev/sdb 2G 集群节点仲裁,防止集群脑裂
DCR 集群注册表盘 /dev/sdc 2G 存储集群全局配置、节点元数据、集群运行信息
DATA 数据磁盘 /dev/sdd 20G 存放系统表空间、用户数据文件、回滚段、临时文件
LOG 日志磁盘 /dev/sde 20G 存放联机重做日志、归档日志文件
服务组件 端口 用途
DMCSS 集群控制 9341 节点间集群心跳通信
MAL 缓存融合 11266 内存数据交互、缓存同步
节点 1 数据库 5236 应用业务连接端口
节点 2 数据库 5237 应用业务连接端口
操作要求:两台节点逐条执行所有命令,系统参数必须完全一致
192.168.137.101 dsc01
192.168.137.102 dsc02
192.168.138.101 dsc01-pri
192.168.138.102 dsc02-pri
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config
bash
vi /etc/sysconfig/grub
bash
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
编辑 /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
编辑 /etc/security/limits.conf,末尾追加:
ini
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
yum install -y chrony
systemctl start chronyd
systemctl enable chronyd
chronyc sources
groupadd -g 1001 dinstall
useradd -u 1001 -g dinstall dmdba
passwd dmdba
两台节点互相生成密钥推送,实现无密码远程登录,方便配置文件同步。
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”
DSC 必须保证四块裸设备归属 dmdba 用户,重启系统权限不重置:
vi /etc/udev/rules.d/90-dm-disk.rules
SUBSYSTEM==“block”,KERNEL==“sdb|sdc|sdd|sde”,OWNER=“dmdba”,GROUP=“dinstall”,MODE=“0660”
udevadm trigger --type=devices --action=change
ls -l /dev/sdb /dev/sdc /dev/sdd /dev/sde
仅安装数据库程序,暂不初始化任何数据库实例
mkdir -p /mnt/dmiso
mount DM8安装包.iso /mnt/dmiso
/mnt/dmiso/DMInstall.bin -q -i /dm8
/dm8/script/root/dm_service_shturl.cc/gl -t dmserver -h
所有配置文件存放路径:/dm8/dsc_config,双节点文件内容保持一致
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
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
节点 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,其余内容完全相同。
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
仅在节点 1 执行初始化操作
su - dmdba
/dm8/bin/dmasmcmd script_file=/dm8/dsc_config/dmdcr_cfg.ini
启动顺序:两台节点同步启动 CSS 服务,之后启动 ASM 服务
节点 1:
/dm8/bin/dmcss DCR_INI=/dm8/dsc_config/dmdcr.ini
/dm8/bin/dmasmsvr DCR_INI=/dm8/dsc_config/dmdcr.ini
节点 2 执行同款命令。
/dm8/bin/dminit control=/dm8/dsc_config/dminit.ini
执行完毕自动生成双节点 dm.ini 实例参数文件。
将 CSS、ASM、数据库进程注册为系统服务,支持 systemctl 启停、开机自启
节点 1 注册示例:
/dm8/script/root/dm_service_shturl.cc/gl -t dmcss -p CSS0 -dm_ini /dm8/dsc_config/dmdcr.ini
/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 按照实例名称依次注册对应服务。
双节点启动 DMCSS 服务
bash
systemctl start DmCSSServiceCSS0
双节点启动 DMASM 服务
bash
systemctl start DmASMSvrServiceASM0
双节点启动数据库实例
bash
systemctl start DmServiceDSC01
编写 dmcssm.ini 配置文件,任意节点启动监视器:
/dm8/bin/dmcssm ini_path=./dmcssm.ini
用途:实时查看节点在线状态、权重、故障告警,支持手动驱逐故障节点。
登录数据库执行 SQL 查看集群信息:
sql
– 查看DSC所有实例状态
SELECT * FROM VDSC_INSTANCE;
-- 查看集群DCR配置信息
SELECT * FROM VDCR_INFO;
– 查看ASM磁盘组与磁盘
SELECT * FROM V$ASM_DISKGROUP;
节点 1 新建测试表、插入测试数据,节点 2 查询可实时读取数据,验证共享存储与缓存融合生效。
故障现象 根本原因 解决方案
CSS 进程启动失败 节点时间不同步、VOTE 盘权限错误、心跳网络不通 chrony 校准时间;修正 udev 磁盘权限;放行私有网段端口
MAL 缓存融合异常,数据不同步 MAL 配置 IP 写错、心跳网卡丢包 核对 dmasvrmal.ini 参数,检查内网链路质量
DCR 校验报错无法启动数据库 修改集群配置后未重新初始化 DCR 盘 清空 VOTE 盘、DCR 盘数据,重新执行 dmasmcmd 初始化集群资源
宕机节点无法重新加入集群 节点 SEQNO 序号错乱 调整 dmdcr.ini 序号,重启 CSS、ASM 服务
ASM 磁盘组挂载失败 裸设备被占用、磁盘归属 root 用户 结束占用进程;固化 udev 权限归属 dmdba
本文完整覆盖 CentOS7 环境双节点 DMDSC 集群全流程部署,调整为四块独立共享磁盘架构(VOTE:2G、DCR:2G、DATA:20G、LOG:20G),四块磁盘物理隔离,日志与数据 IO 分离,性能更优。文档从前期系统优化、共享存储搭建、集群参数配置、实例初始化,到启停运维、故障切换、问题排查全部落地。文档适配测试环境交付,生产环境可升级为 SAN 光纤存储 + 三表决盘架构,满足政企核心业务数据库高可用运行需求。
文章
阅读量
获赞
