注册
达梦DMDSC集群搭建完整文档
技术分享/ 文章详情 /

达梦DMDSC集群搭建完整文档

LY 2026/07/31 156 0 0

达梦DMDSC集群搭建完整文档

一、DSC相关理论

1. DMDSC 概述

  1. DMDSC集群主要由数据库和数据库实例、共享存储、DMASM或DMASM镜像、本地存储、通信网络、集群控制软件DMCSS、集群监视器DMCSSM组成。DMDSC集群最多支持8个数据库实例节点。
  2. 集群控制软件DMCSS:DMCSS可检测故障并自动将故障节点踢出集群,保证数据库服务的正常提供。
  3. DMASM镜像:当出现磁盘损坏或数据丢失时,系统无需人工干预即可利用其他镜像副本继续提供数据库服务,同时又可以自动或手动通过使用其他镜像副本进行数据恢复。
  4. 通信网络:DMDSC集群中,网络分为对外服务网络、MAL高速内网和高速共享存储网络三部分。对外服务网络用于对外提供数据库服务;MAL高速内网用于数据库实例之间交换信息和数据;高速共享存储网络用于数据库实例和共享存储之间的通信。
  5. 故障节点恢复正常后,DMCSS 会启动节点重加入处理流程,将故障节点重新加入到DMDSC集群中。

2 DMCSS

  1. DMCSS主要功能包括:写入心跳信息、选举DMCSS控制节点、选取DMASM控制节点、管理被监控对象的启动流程、集群状态监控、节点故障处理、节点重加入等;DMCSS还可以接收并执行DMCSSM指令。
  2. DMCSS选取监控对象控制节点的原则:只有一个活动节点,则设置活动节点为控制节点;存在多个活动节点,则选择节点号小的节点为控制节点。
  3. 启动DMDSC集群之前,必须先启动集群同步服务DMCSS,如果使用了DMASM文件系统,则DMASMSVR服务也必须先启动。

3 DMDSC 的启动与退出

  1. 退出DMDSC集群标准顺序:依次退出DMSERVER、DMASMSVR、DMCSS,未按照该顺序进行将导致节点异常退出。
  2. 使用DMCSSM监视器提供的命令退出集群
#先使用show命令查看ASM/DB组每个节点的自动拉起标记 set group_name auto restart off #关闭指定组的自动拉起功能 ep stop group_name #退出指定组(所有节点) ep halt group_name.ep_name #强制退出指定组的指定节点
  1. 使用控制台命令退出:
  • DMASMSVR和DMSERVER控制台执行exit命令,会通知所有其他节点一起退出;
  • DMCSS需要手动退出所有节点,无同步退出功能;
  • DSC环境Disql登录实例执行 stop instance 关闭实例。
  1. 通过DEM资源监控页面进行集群启停。
  2. 通过systemctl命令启停:使用systemctl启动节点,必须通过systemctl命令退出节点。需正常退出一个节点后再依次退出其余节点(start启动,stop退出)。
  3. 通过DMSERVER脚本命令启停:使用 DMSERVER 脚本命令启动节点,必须通过 DMSERVER 脚本命令退出节点。正常退出一个节点后再依次退出其余节点(start启动,stop退出,stop_all命令退出集群所有节点)。

4 故障处理

  1. DMDSC故障处理分为三个阶段:
    • 第一阶段:所有活动节点共同参与,全局信息收集、集群重构;
    • 第二阶段:控制节点执行,重演REDO日志;
    • 第三阶段:控制节点执行,回滚故障节点未提交事务、PURGE故障节点已提交事务修改。
  2. 故障日志:集群绝大多数故障日志输出在DMCSS/DMCSSM监视器,可通过[!!!DSC INFO!!!]关键字筛选日志。
    • 实例故障:[!!!DSC INFO!!!][CSS]: dead instance detected, detect ep %s[%d] broken.
    • 实例组磁盘心跳故障:[!!!DSC INFO!!!]All processers on EP[%d] have detected disk heartbeat issues.
    • 共享存储异常:[%s][!!!DSC INFO!!!]Unable to access VOTING DISK! disk may be not mounted, suggest to check shared storage.
    • 网络连接断开:[!!!DSC INFO!!!]Network connect to IP address %s has been disconnected.
    • 网卡失效:[!!!DSC INFO!!!]Network interface with IP address %s no longer running.
    • 集群整体失联:[!!!DSC INFO!!!]CSSM detected all EP inactive, the entire cluster may be faulty or has already exited or network failure occurred.

二、DMDSC集群搭建

1 安装前准备

1.1 本地磁盘规划

名称 机器 A(db0) 机器 B(db1) 备注
数据库安装目录 /home/dmdba/dmdbms /home/dmdba/dmdbms 数据库安装路径,存放数据库运行日志等信息
数据库备份目录 /home/dmdba/dmbak /home/dmdba/dmbak 用于存放数据库备份文件
数据库 SQL 日志目录 /home/dmdba/dmsqllog /home/dmdba/dmsqllog 用于存放数据库 dmsql 日志
集群配置文件目录 /home/dmdba/dmdbms/dsc_config /home/dmdba/dmdbms/dsc_config 用于存放数据库集群配置文件
系统 core 目录 /home/dmdba/core /home/dmdba/core 存放系统core转储文件
性能监控nmon目录 /home/dmdba/nmon_output /home/dmdba/nmon_output 存放服务器nmon性能日志

1.2 共享存储规划

名称 拟定设备路径 分区大小 备注
VOTE 磁盘 /dev/dm/asm-dmvote 2 GB 记录集群成员信息,集群磁盘心跳检测,判定节点状态
DCR 盘 /dev/dm/asm-dmdcr 2 GB 存储、维护集群全局配置信息,全集群共享
Redo 日志盘 /dev/dm/asm-dmlog 5 GB 存储集群所有实例Redo log日志
数据盘 /dev/dm/asm-dmdata 15 GB 存储业务数据文件
归档盘 /dev/dm/asm-dmarch 15 GB 存储各实例归档日志

1.3 端口与IP规划

配置项 db0(x.x.x.100) db1(x.x.x.101)
业务对外IP x.x.x.100 x.x.x.101
MAL内网交换IP x.x.x.100 x.x.x.101
CSS节点名 CSS0 CSS1
CSS端口 11286 11286
ASM节点名 ASM0 ASM1
ASM端口 11276 11276
DSC实例名 DSC0 DSC1
数据库服务端口PORT_NUM 5236 5236
ASM MAL端口 11266 11266
DSC MAL端口 11246 11246
全局OGUID 210715 210715

2 集群搭建完整步骤

2.1 创建dmdba用户、初始化系统环境

略(达梦标准用户创建操作)

2.2 配置dmdcr_cfg.ini(db0、db1两台机器完全一致)

文件路径:/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini

DCR_N_GRP = 3 DCR_VTD_PATH = /dev/dm/asm-dmvote DCR_OGUID = 210715 [GRP] DCR_GRP_TYPE = CSS DCR_GRP_NAME = GRP_CSS DCR_GRP_N_EP = 2 DCR_GRP_DSKCHK_CNT = 65 [GRP_CSS] DCR_EP_NAME = CSS0 DCR_EP_HOST = x.x.x.100 DCR_EP_PORT = 11286 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = x.x.x.101 DCR_EP_PORT = 11286 [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 DCR_EP_SHM_KEY = 42424 DCR_EP_SHM_SIZE = 1024 DCR_EP_HOST = x.x.x.100 DCR_EP_PORT = 11276 DCR_EP_ASM_LOAD_PATH = /dev/dm [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 42425 DCR_EP_SHM_SIZE = 1024 DCR_EP_HOST = x.x.x.101 DCR_EP_PORT = 11276 DCR_EP_ASM_LOAD_PATH = /dev/dm [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 DCR_EP_SEQNO = 0 DCR_EP_PORT = 5236 [GRP_DSC] DCR_EP_NAME = DSC1 DCR_EP_SEQNO = 1 DCR_EP_PORT = 5236

2.3 db0节点初始化DCR/VOTE共享磁盘

/home/dmdba/dmdbms/bin/dmasmcmd

ASM交互命令:

create dcrdisk '/dev/dm/asm-dmdcr' 'dcr'
create votedisk '/dev/dm/asm-dmvote' 'vote'
init dcrdisk '/dev/dm/asm-dmdcr' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini' identified by 'Dameng@123'
init votedisk '/dev/dm/asm-dmvote' from '/home/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'
create asmdisk '/dev/dm/asm-dmdata' 'DATA0'
create asmdisk '/dev/dm/asm-dmlog' 'LOG0'
create asmdisk '/dev/dm/asm-dmarch' 'ARCH0'

2.4 配置dmasvrmal.ini(ASM MAL通信配置)

文件路径:/home/dmdba/dmdbms/dsc_config/dmasvrmal.ini

[MAL_INST0] MAL_INST_NAME = ASM0 MAL_HOST = x.x.x.100 MAL_PORT = 11266 [MAL_INST1] MAL_INST_NAME = ASM1 MAL_HOST = x.x.x.101 MAL_PORT = 11266

将文件分别拷贝至两台节点对应目录:

  • db0:/home/dmdba/dmdbms/dsc_config/DSC0/dmasvrmal.ini
  • db1:/home/dmdba/dmdbms/dsc_config/DSC1/dmasvrmal.ini

2.5 配置dmdcr.ini(区分节点seqno)

db0节点(seqno=0)

路径:/home/dmdba/dmdbms/dsc_config/dmdcr.ini

DMDCR_PATH = /dev/dm/asm-dmdcr DMDCR_MAL_PATH = /home/dmdba/dmdbms/dsc_config/DSC0/dmasvrmal.ini DMDCR_SEQNO = 0 DMDCR_AUTO_OPEN_CHECK = 111 DMDCR_ASM_TRACE_LEVEL = 2 # 开启自动拉起时取消注释 ##DMDCR_ASM_RESTART_INTERVAL = 60 ##DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/dsc_config/DmAsmService_DSC0 start ##DMDCR_DB_RESTART_INTERVAL = 60 ##DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/dsc_config/DmService_DSC0 start
db1节点(seqno=1)

路径:/home/dmdba/dmdbms/dsc_config/dmdcr.ini

DMDCR_PATH = /dev/dm/asm-dmdcr DMDCR_MAL_PATH = /home/dmdba/dmdbms/dsc_config/DSC1/dmasvrmal.ini DMDCR_SEQNO = 1 DMDCR_AUTO_OPEN_CHECK = 111 DMDCR_ASM_TRACE_LEVEL = 2 # 开启自动拉起时取消注释 ##DMDCR_ASM_RESTART_INTERVAL = 60 ##DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/dsc_config/DmAsmServiceDSC1 start ##DMDCR_DB_RESTART_INTERVAL = 60 ##DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/dsc_config/DmServiceDSC1 start

2.6 前台启动DMCSS、DMASM服务(测试部署阶段)

# db0启动CSS /home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC0/dmdcr.ini # db1启动CSS /home/dmdba/dmdbms/bin/dmcss DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC1/dmdcr.ini # 未开启自动拉起时手动启动ASM # db0 ASM /home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC0/dmdcr.ini # db1 ASM /home/dmdba/dmdbms/bin/dmasmsvr DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC1/dmdcr.ini

2.7 db0节点dmasmtool创建ASM磁盘组

/home/dmdba/dmdbms/bin/dmasmtool DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC0/dmdcr.ini

ASM命令:

create diskgroup 'DMLOG' asmdisk '/dev/dm/asm-dmlog'
create diskgroup 'DMDATA' asmdisk '/dev/dm/asm-dmdata'
create diskgroup 'DMARCH' asmdisk '/dev/dm/asm-dmarch'

2.8 dminit初始化集群数据库实例

创建dminit.ini,路径/home/dmdba/dmdbms/dsc_config/dminit.ini

DB_NAME = DSC SYSDBA_PWD = Dameng@123 SYSAUDITOR_PWD = Dameng@123 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 = 512 DCR_SEQNO = 0 AUTO_OVERWRITE = 1 PAGE_SIZE = 32 EXTENT_SIZE = 16 BLANK_PAD_MODE = 1 [DSC0] CONFIG_PATH = /home/dmdba/dmdbms/dsc_config/DSC0 PORT_NUM = 5236 MAL_HOST = x.x.x.100 MAL_PORT = 11246 LOG_PATH = +DMLOG/DSC0_LOG01.log LOG_PATH = +DMLOG/DSC0_LOG02.log [DSC1] CONFIG_PATH = /home/dmdba/dmdbms/dsc_config/DSC1 PORT_NUM = 5236 MAL_HOST = x.x.x.101 MAL_PORT = 11246 LOG_PATH = +DMLOG/DSC1_LOG01.log LOG_PATH = +DMLOG/DSC1_LOG02.log

执行初始化(db0执行):

/home/dmdba/dmdbms/bin/dminit control=/home/dmdba/dmdbms/dsc_config/dminit.ini

同步配置文件到db1:

scp -r /home/dmdba/dmdbms/dsc_config/DSC1 dmdba@x.x.x.101:/home/dmdba/dmdbms/dsc_config/

2.9 配置本地归档dmarch.ini

db0节点
  1. 修改dm.ini开启归档
vi /home/dmdba/dmdbms/dsc_config/DSC0/dm.ini ARCH_INI = 1
  1. 创建dmarch.ini
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
db1节点
  1. 修改dm.ini开启归档
vi /home/dmdba/dmdbms/dsc_config/DSC1/dm.ini ARCH_INI = 1
  1. 创建dmarch.ini
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

2.10 前台启动DMSERVER数据库实例

# db0 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/dsc_config/DSC0/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc_config/DSC0/dmdcr.ini # db1 /home/dmdba/dmdbms/bin/dmserver /home/dmdba/dmdbms/dsc_config/DSC1/dm.ini dcr_ini=/home/dmdba/dmdbms/dsc_config/DSC1/dmdcr.ini

2.11 root用户注册系统后台服务

db0节点注册
# 注册CSS服务 /home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmcss -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -p CSS # 注册ASM,依赖CSS /home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM # 注册DSC实例,依赖ASM /home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmserver -dm_ini /home/dmdba/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
db1节点注册
/home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmcss -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -p CSS /home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmasmsvr -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM /home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmserver -dm_ini /home/dmdba/dmdbms/dsc_config/DSC1/dm.ini -dcr_ini /home/dmdba/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC

卸载服务命令:

/home/dmdba/dmdbms/script/root/dm_service_unshturl.cc/Hb -n DmCSSServiceCSS /home/dmdba/dmdbms/script/root/dm_service_unshturl.cc/Hb -n DmASMSvrServiceASM /home/dmdba/dmdbms/script/root/dm_service_unshturl.cc/Hb -n DmServiceDSC

2.12 配置DMCSSM集群监视器

创建dmcssm.ini,路径/home/dmdba/dmdbms/bin/dmcssm.ini

CSSM_OGUID = 210715 CSSM_CSS_IP = x.x.x.100:11286 CSSM_CSS_IP = x.x.x.101:11286 CSSM_LOG_PATH = ../log CSSM_LOG_FILE_SIZE = 512 CSSM_LOG_SPACE_LIMIT = 2048

root注册监视器服务:

/home/dmdba/dmdbms/script/root/dm_service_shturl.cc/Hb -t dmcssm -cssm_ini /home/dmdba/dmdbms/bin/dmcssm.ini -p Monitor

卸载监视器:

/home/dmdba/dmdbms/script/root/dm_service_unshturl.cc/Hb -n DmCSSMonitorServiceMonitor

2.13 网络权限setcap授权(root执行)

sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmserver sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdbms/bin/dmasmsvr # 验证授权 getcap /home/dmdba/dmdbms/bin/dmserver getcap /home/dmdba/dmdbms/bin/dmasmsvr

验证core转储:kill -11 数据库进程号,检查core目录是否生成转储文件。

2.14 集群启停操作

启动监视器
# 前台调试启动 /home/dmdba/dmdbms/bin/dmcssm INI_PATH=/home/dmdba/dmdbms/bin/dmcssm.ini # 后台服务启动 /home/dmdba/dmdbms/bin/DmCSSMonitorServiceMonitor start

监视器内执行show查看全集群状态。

集群整体启动

两台节点同时启动CSS服务:

/home/dmdba/dmdbms/bin/DmCSSServiceCSS start

说明:CSS启动后30s自动拉起ASM,60s自动拉起DMSERVER实例(已开启自动拉起参数)。

集群标准停止顺序(DSC→ASM→CSS)
# 1.停止数据库实例(两台节点) /home/dmdba/dmdbms/bin/DmServiceDSC stop # 2.停止ASM服务(两台节点) /home/dmdba/dmdbms/bin/DmASMSvrServiceASM stop # 3.停止CSS集群控制(两台节点) /home/dmdba/dmdbms/bin/DmCSSServiceCSS stop

三、部署问题处理

dminit初始化时报错创建日志文件失败 code:-7013

报错日志:

create rlog file +DMLOG/DSC1_LOG001.log failed, code: -7013.
fail to init db.

问题根因

DMLOG共享磁盘总容量5GB,原配置LOG_SIZE=2048,两台实例各2个日志文件,总占用8GB,磁盘剩余空间不足(仅剩余980MB),写入失败。

解决方案

  1. 临时方案:修改dminit.ini中LOG_SIZE = 512,减小单个日志文件大小;
  2. 生产方案:扩容DMLOG共享存储磁盘;

清理ASM残留文件(重新初始化前必做)

  1. dmasmtool清理磁盘文件
/home/dmdba/dmdbms/bin/dmasmtool DCR_INI=/home/dmdba/dmdbms/dsc_config/DSC0/dmdcr.ini ASM>rm -rf +DMLOG/DSC0_LOG* ASM>rm -rf +DMLOG/DSC1_LOG* ASM>rm -rf +DMDATA/data/DSC_NEW ASM>exit
  1. 删除本地残留配置文件
rm -f /home/dmdba/dmdbms/dsc_config/DSC0/dm.ini rm -f /home/dmdba/dmdbms/dsc_config/DSC0/sqllog.ini rm -f /home/dmdba/dmdbms/dsc_config/DSC1/dm.ini rm -f /home/dmdba/dmdbms/dsc_config/DSC1/sqllog.ini
  1. 重新执行dminit初始化命令。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服