注册
达梦共享存储集群部署
专栏/技术分享/ 文章详情 /

达梦共享存储集群部署

wwwwww 2026/09/18 265 0 0
摘要

1.集群介绍
DMDSC采用共享存储多活架构,允许多个数据库实例同时访问同一套共享存储。与传统的主备架构不同,DMDSC中的每个节点都是对等的主节点,均可独立处理读写请求,实现真正的负载均衡。

2.部署(正常需要两台以上的机器,以下为截图为单机部署,以接口区分不同机器)
2.1共享存储规划
DMDSC集群为了实现多实例同时访问和修改数据,需要数据文件、控制文件和日志文件都放到共享存储上。部署一般需要5个磁盘,分别是VOTE磁盘、DCR 盘、Redo 日志盘、数据盘、归档盘。由于虚拟机只有4个磁盘,所以Redo日志盘归到数据盘中。
VOTE磁盘:用于集群节点间的心跳检测和故障仲裁。各节点每间隔 1 秒向 VOTE 磁盘写入时间戳(心跳信息),DMCSS定时读取这些信息来判断节点是否存活。当网络故障或节点异常时,通过投票机制决定哪些节点应被踢出集群,防止脑裂。
DCR盘:存储和维护整个集群的配置元数据,包括集群中各节点的实例名、监听端口、节点状态、故障信息等。整个集群只能配置一个 DCR 磁盘,所有节点共享这份配置信息。集群启动时,各实例首先读取 DCR 获取集群配置。
Redo日志盘:存储数据库的联机重做日志,这是保证数据一致性的关键。
数据盘:存放数据库的核心数据文件,包括表空间、数据文件、控制文件、索引等。
归档盘:存储已切换的归档日志文件。用于数据库的备份恢复、数据闪回、日志挖掘等操作。当联机日志写满后,会被归档到此磁盘。

DMDSC 集群主要由数据库和数据库实例、共享存储、DMASM 或 DMASM 镜像、本地存储、通信网络、集群控制软件DMCSS、集群监视器DMCSSM组成。
DMCSS是集群同步服务,负责各节点间的状态同步、故障检测与仲裁。主要功能为:各节点CSS定期向VOTE盘写入心跳,互相监控存活状态;网络分区或节点故障时,通过投票机制决定谁留谁走,防止脑裂;检测到实例异常退出时,按DMDCR_AUTO_OPEN_CHECK间隔自动重启;维护集群全局状态,确保各节点对集群认知一致。
DMASM是自动存储管理服务,提供共享存储的统一管理和访问接口。主要功能为:将物理磁盘抽象为逻辑磁盘组,简化存储管理;统一管理数据文件、日志文件的空间分配与回收;多实例同时读写共享盘时,协调I/O顺序,避免冲突;可选配置磁盘镜像,提高数据可靠性;支持类似Oracle ASM的条带化(Striping),提升I/O性能。
DMCSSM是达梦DMDSC集群中的集群监控管理工具,用于监视和控制整个集群的运行状态。

2.2集群搭建
配置 dmdcr_cfg.ini(两个节点配置一样,单机部署配置)
DCR_N_GRP = 3 ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH = /dev/vdb ##规划为 vote 的磁盘
DCR_OGUID = 210715 ## 消息标识,一个组里面只有一个。

[GRP] #新建一个 GROUP
DCR_GRP_TYPE = CSS ##组类型(CSS/ASM/DB)
DCR_GRP_NAME = GRP_CSS ##组名
DCR_GRP_N_EP = 2 ##组内节点个数
DCR_GRP_DSKCHK_CNT = 65 ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
DCR_EP_NAME = CSS0 ##CSS 节点名
DCR_EP_HOST = 192.168.200.30 ##心跳地址
DCR_EP_PORT = 11286 ##CSS 端口
[GRP_CSS]
DCR_EP_NAME = CSS1
DCR_EP_HOST = 192.168.201.14
DCR_EP_PORT = 11287

[GRP]
DCR_GRP_TYPE = ASM
DCR_GRP_NAME = GRP_ASM
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 61
[GRP_ASM]
DCR_EP_NAME = ASM0 ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
DCR_EP_SHM_KEY = 42424 ##共享内存标识
DCR_EP_SHM_SIZE = 1024 ##共享内存大小
DCR_EP_HOST = 192.168.200.30 ##心跳地址
DCR_EP_PORT = 11276 ##ASM 端口
DCR_EP_ASM_LOAD_PATH = /dev
[GRP_ASM]
DCR_EP_NAME = ASM1
DCR_EP_SHM_KEY = 42425
DCR_EP_SHM_SIZE = 1024
DCR_EP_HOST = 192.168.201.14
DCR_EP_PORT = 11277
DCR_EP_ASM_LOAD_PATH = /dev
[GRP]
DCR_GRP_TYPE = DB
DCR_GRP_NAME = GRP_DSC
DCR_GRP_N_EP = 2
DCR_GRP_DSKCHK_CNT = 57
[GRP_DSC]
DCR_EP_NAME = DSC0 ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
DCR_EP_SEQNO = 0 ##组内序号,不能重复
DCR_EP_PORT = 5240 ##实例端口,和 dm.ini 的 PORT_NUM 一致
[GRP_DSC]
DCR_EP_NAME = DSC1
DCR_EP_SEQNO = 1
DCR_EP_PORT = 5241

初始化磁盘组
打开asmcmd,输入以下命令
./dmasmcmd

ASM>create dcrdisk ‘/dev/vdc’ ‘dcr’
ASM>create votedisk ‘/dev/vdb’ ‘vote’
ASM>init dcrdisk ‘/dev/vd’ from ‘/dm/dmdbms/dsc_config/init/dmdcr_cfg.ini’ identified by ‘****’
ASM>init votedisk ‘/dev/dm/asm-dmvote’ from ‘/dm/dmdbms/dsc_config/init/dmdcr_cfg.ini’
ASM> create asmdisk ‘/dev/vde’ ‘DATA0’
ASM> create asmdisk ‘/dev/vdd’ ‘ARCH0’
路径需要改成自己系统的路径

配置 dmasvrmal.ini(两个节点配置相同)
[MAL_INST0]
MAL_INST_NAME = ASM0
MAL_HOST = 192.168.200.30 # 节点0心跳IP(eth0)
MAL_PORT = 11266 # ASM0 MAL端口

[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 192.168.201.14 # 节点1心跳IP(eth1)
MAL_PORT = 11267 # 改为11267,避免端口冲突

配置 dmdcr.in
节点1
DMDCR_PATH = /dev/vdc
DMDCR_MAL_PATH = /home/dmdba/dmdbms/dsc_config/dmasvrmal.ini

DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
节点2(dmdcr_seqno为1)
DMDCR_PATH = /dev/vdc
DMDCR_MAL_PATH = /home/dmdba/dmdbms/dsc_config/dmasvrmal.ini

DMDCR_SEQNO = 0
DMDCR_AUTO_OPEN_CHECK = 111
DMDCR_ASM_TRACE_LEVEL = 2
DMDCR_SEQNO 是节点字DCR中的编号,不同节点编号不同。
DMDCR_AUTO_OPEN_CHECK 自动拉起检查的时间间隔。DMCSS 服务定时检查集群状态,如果发现有节点异常退出,会自动尝试重新拉起该节点的数据库实例,设为 0 表示关闭自动拉起功能,通常为 111 秒。
DMDCR_ASM_TRACE_LEVEL ASM的跟踪日志级别,数字越大,日志越详细。

启动 DMCSS、DMASM 服务
./dmcss DCR_INI=/dm/dmdbms/dsc_config/DSC0/dmdcr.ini
./dmcss DCR_INI=/dm/dmdbms/dsc_config/DSC1/dmdcr.ini
./dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/DSC0/dmdcr.ini
./dmasmsvr DCR_INI=/dm/dmdbms/dsc_config/DSC1/dmdcr.ini

创建 DMASM 磁盘组
./dmasmtool DCR_INI=/dm/dmdbms/dsc_config/DSC0/dmdcr.ini
ASM> create diskgroup ‘DMDATA’ asmdisk ‘/dev/vde’
ASM> create diskgroup ‘DMARCH’ asmdisk ‘/dev/vdd’

初始化实例,创建dminit.ini
(两个节点配置相同。由于将log放到data盘,所以LOG_PATH为DATA)
DB_NAME = DSC

SYSDBA_PWD = Aa4567824
SYSAUDITOR_PWD = Aa4567824
SYSTEM_PATH = +DMDATA/data
SYSTEM = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE = 1024
ROLL = +DMDATA/data/ROLL.dbf
ROLL_SIZE = 10000
MAIN = +DMDATA/data/MAIN.dbf
MAIN_SIZE = 1024
CTL_PATH = +DMDATA/data/dm.ctl
CTL_SIZE = 8
LOG_SIZE = 2048
DCR_PATH = /dev/vdc
DCR_SEQNO = 0
AUTO_OVERWRITE = 1
PAGE_SIZE = 32
EXTENT_SIZE = 16
BLANK_PAD_MODE = 1

[DSC0]
CONFIG_PATH = /DMDSC/dsc_config/DSC0
PORT_NUM = 5240
MAL_HOST = 192.168.200.30
MAL_PORT = 11256
LOG_PATH = +DMDATA/DSC0_LOG01.log
LOG_PATH = +DMDATA/DSC0_LOG02.log
[DSC1]
CONFIG_PATH = /DMDSC/dsc_config/DSC1
PORT_NUM = 5241
MAL_HOST = 192.168.201.14
MAL_PORT = 11257
LOG_PATH = +DMDATA/DSC1_LOG01.log
LOG_PATH = +DMDATA/DSC1_LOG02.log

执行初始化命令
./dminit control=/dm/dmdbms/dsc_config/init/dminit.ini

修改两个节点的dm.ini文件,将归档配置打开
ARCH_INI = 1

配置 dmarch.ini 文件
节点1
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
节点2
ARCH_WAIT_APPLY = 0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400

启动 DMSERVER 服务
./dmserver /dm/dmdbms/dsc_config/DSC0/dm.ini dcr_ini=/dm/dmdbms/dsc_config/DSC0/dmdcr.ini

./dmserver /dm/dmdbms/dsc_config/DSC1/dm.ini dcr_ini=/dm/dmdbms/dsc_config/DSC0/dmdcr.ini

注册服务(两个节点都要注册)
/dm_service_installer.sh -t dmcss -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -p CSS
./dm_service_installer.sh -t dmasmsvr -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM
./dm_service_installer.sh -t dmserver -dm_ini /dm/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /dm/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

配置监视器创建 dmcssm.ini(两个节点配置相同)
CSSM_OGUID = 210715
CSSM_CSS_IP = 192.168.200.30:11286 # DSC0 CSS 心跳地址和端口
CSSM_CSS_IP = 192.168.201.14:11287 # DSC1 CSS 心跳地址和端口
CSSM_LOG_PATH = /DMDSC/log
CSSM_LOG_FILE_SIZE = 512
CSSM_LOG_SPACE_LIMIT = 2048

授权 setcap(root用户执行)
sudo setcap cap_net_raw,cap_net_admin=eip /dm/dmdbms/bin/dmserver
sudo setcap cap_net_raw,cap_net_admin=eip /dm/dmdbms/bin/dmasmsvr
优化集群在操作系统假死时对节点状态的判断机制

3.启动监视器
./dmcssm INI_PATH=/dm/dmdbms/bin/dmcssm.ini

成功部署截图
图片7.png
图片8.png
DSC0执行
图片9.png
DSC1查询
图片10.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服