注册
DSC集群搭建及报错解决方法
培训园地/ 文章详情 /

DSC集群搭建及报错解决方法

DM_071856 2025/09/22 47 0 0

DSC集群搭建

前期准备
关闭防火墙
  • 先查看防火墙状态
    • systemctl status firewalld
  • 如果开启则使用关闭
    • 先关闭
      systemctl stop firewalld
  • 设置不会开机自启
    systemctl disable firewalld
  • 检查状态
    systemctl status firewalld
安装数据库
  • 查看系统版本:cat /etc/os-release
  • 查看cpu信息:lscpu
  • 下载对应版本dm8数据库并安装
  • 数据库安装目录:/llf/dm8
  • 实例目录:/llf/dmdata/data
  • 后续涉及数据库的操作使用dmdba用户,属于dinstall组(由于服务器之前已存在,新建了dinstall1组和dmdba1用户,与dmdba效果相同)
端口规划

端口规划.png

存储准备
磁盘分区
  • 查看共享磁盘:lsblk
    0805lsblk.png
    为了方便操作,对共享磁盘sdc进行划分。
    磁盘划分.png
  • 磁盘划分:fdisk /dev/sdc
    0805fdisk.png
    0805fdisk2.png
  • 通知操作系统重新读取分区表:partprobe /dev/sdc
磁盘绑定
  • vi /etc/udev/rules.d/70-persistent-ipoib.rules
ACTION=="add", KERNEL=="sdc1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdc2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdc3", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdc4", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dmdba1", GROUP="dinstall1", MODE="660"
  • 通知操作系统重新读取分区表:partprobe /dev/sdc
  • 重启:reboot
  • 查看设备大小
    0805blockdev.png
    以上大小是以字节为单位,而且每个扇区512个字节,104857600/512=204800个扇区,也与分配时查询的扇区数一致。
搭建dsc集群
创建dmdcr_cfg.ini
  • 使用dmdba1操作
  • 1个节点配置即可,在相同节点进行磁盘组初始化
  • 文件目录:/llf/dm8/config/dmdcr_cfg.ini
DCR_N_GRP = 3 #集群环境有多少个 GROUP,范围:1~16 DCR_VTD_PATH = /dev/raw/raw2 DCR_OGUID = 63635 [GRP] DCR_GRP_TYPE = CSS #组类型(CSS/ASM/DB) DCR_GRP_NAME = GRP_CSS #组名 DCR_GRP_N_EP = 2 #组内节点个数 DCR_GRP_DSKCHK_CNT = 60 #磁盘心跳容错时间,单位:秒 [GRP_CSS] DCR_EP_NAME = CSS0 #CSS 节点名 DCR_EP_HOST = 30.*.*.227 #心跳地址 DCR_EP_PORT = 9341 #CSS 端口 [GRP_CSS] DCR_EP_NAME = CSS1 DCR_EP_HOST = 30.*.*.228 DCR_EP_PORT = 9343 [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 #ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致 DCR_EP_SHM_KEY = 93360 #共享内存标识 DCR_EP_SHM_SIZE = 1024 #共享内存大小 DCR_EP_HOST = 30.*.*.227 #心跳地址 DCR_EP_PORT = 9349 #ASM 端口 DCR_EP_ASM_LOAD_PATH = /dev/raw [GRP_ASM] DCR_EP_NAME = ASM1 DCR_EP_SHM_KEY = 93361 DCR_EP_SHM_SIZE = 1024 DCR_EP_HOST = 30.*.*.228 DCR_EP_PORT = 9351 DCR_EP_ASM_LOAD_PATH = /dev/raw [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 = DSC0 #实例名,和 dm.ini 的 INSTANCE_NAME 一致 DCR_EP_SEQNO = 0 #组内序号,不能重复 DCR_EP_PORT = 5237 #实例端口,和 dm.ini 的 PORT_NUM 一致 DCR_CHECK_PORT = 9741 #DCR 检查端口 [GRP_DSC] DCR_EP_NAME = DSC1 DCR_EP_SEQNO = 1 DCR_EP_PORT = 5238 DCR_CHECK_PORT = 9742
初始化磁盘组
  • dmdba1操作
  • 机器A上操作
  • 运行asm命令行工具:/llf/dm8/bin/dmasmcmd
ASM> create dcrdisk '/dev/raw/raw1' 'dcr' ASM> create votedisk '/dev/raw/raw2' 'vote' ASM> create asmdisk '/dev/raw/raw3' 'LOG0' ASM> create asmdisk '/dev/raw/raw4' 'DATA0' ASM> init dcrdisk '/dev/raw/raw1' from '/llf/dm8/config/dmdcr_cfg.ini' identified by 'Admin1234' ASM> init votedisk '/dev/raw/raw2' from '/llf/dm8/config/dmdcr_cfg.ini'
创建dmasvrmal.ini
  • 使用dmdba1操作
  • 两节点相同
  • 文件目录:/llf/dm8/config/dmasvrmal.ini
[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = 30.*.*.227 #心跳地址 MAL_PORT = 7236 #MAL监听端口 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = 30.*.*.228 MAL_PORT = 7237
创建dmdcr.ini
  • 机器A
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/llf/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 0 DMDCR_AUTO_OPEN_CHECK = 90 DMDCR_ASM_TRACE_LEVEL=2 #ASM 重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 30 #DMDCR_ASM_STARTUP_CMD = /llf/dm8/bin/dmasmsvr dcr_ini=/llf/dm8/config/dmdcr.ini #DB 重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = /llf/dm8/bin/dmserver path=/llf/dm8/config/dsc0_config/dm.ini dcr_ini=/llf/dm8/config/dmdcr.ini
  • 机器B
DMDCR_PATH = /dev/raw/raw1 DMDCR_MAL_PATH =/llf/dm8/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 1 DMDCR_AUTO_OPEN_CHECK = 90 DMDCR_ASM_TRACE_LEVEL=2 #ASM 重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 30 #DMDCR_ASM_STARTUP_CMD = /llf/dm8/bin/dmasmsvr dcr_ini=/llf/dm8/config/dmdcr.ini #DB 重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 60 #DMDCR_DB_STARTUP_CMD = /llf/dm8/bin/dmserver path=/llf/dm8/config/dsc1_config/dm.ini dcr_ini=/llf/dm8/config/dmdcr.ini
  • 二者在DMDCR_SEQNO序列号、DB启动命令中dm.ini的路径不同,其余均相同
启动CSS和ASM服务
  • 使用dmdba1执行
  • 两节点都执行
# 启动css /llf/dm8/bin/dmcss DCR_INI=/llf/dm8/config/dmdcr.ini # 启动asm /llf/dm8/bin/dmasmsvr DCR_INI=/llf/dm8/config/dmdcr.ini
创建DMASM磁盘组
  • 任意一台机器,dmdba1操作
  • 进入安装bin目录使用dmasmtool
  • /llf/dm8/bin/dmasmtool DCR_INI=/llf/dm8/config/dmdcr.ini
/llf/dm8/bin/dmasmtool DCR_INI=/llf/dm8/config/dmdcr.ini ASM> create diskgroup 'DMLOG' asmdisk '/dev/raw/raw3' ASM> create diskgroup 'DMDATA' asmdisk '/dev/raw/raw4'
创建dminit.ini
  • dmdba1操作
  • 两节点配置文件相同
db_name = dsc system_path = +DMDATA/data main = +DMDATA/data/dsc/main.dbf main_size = 128 roll = +DMDATA/data/dsc/roll.dbf roll_size = 128 system = +DMDATA/data/dsc/system.dbf system_size = 128 ctl_path = +DMDATA/data/dsc/dm.ctl ctl_size = 8 log_size = 2048 dcr_path = /dev/raw/raw1 dcr_seqno = 0 auto_overwrite = 1 PAGE_SIZE = 32 CASE_SENSITIVE = Y CHARSET = 0 SYSDBA_PWD = Dameng123 #设置密码 SYSAUDITOR_PWD = Dameng123 [DSC0] config_path = /llf/dm8/config/dsc0_config port_num = 5237 mal_host = 30.*.*.227 mal_port = 5736 log_path = +DMLOG/log/dsc0_log01.log log_path = +DMLOG/log/dsc0_log02.log [DSC1] config_path = /llf/dm8/config/dsc1_config port_num = 5238 mal_host = 30.*.*.228 mal_port = 5737 log_path = +DMLOG/log/dsc1_log01.log log_path = +DMLOG/log/dsc1_log02.log
初始化实例
  • dmdba1操作
  • 任意一节点操作
/llf/dm8/bin/dminit control=/llf/dm8/config/dminit.ini
  • 在config_path下会出现2个配置文件:dsc0_config, dsc1_config
  • 将其中一个发到机器B:scp -r /llf/dm8/config/dsc1_config 10.*.*.78:/llf/dm8/config/
启动dmserver服务
  • 机器A
    /llf/dm8/bin/dmserver /llf/dm8/config/dsc0_config/dm.ini dcr_ini=/llf/dm8/config/dmdcr.ini
  • 机器B
    /llf/dm8/bin/dmserver /llf/dm8/config/dsc1_config/dm.ini dcr_ini=/llf/dm8/config/dmdcr.ini
配置监视器
  • dmdba1操作
  • 目录:/llf/dm8/config/dmcssm.ini
  • 机器A上配置
CSSM_OGUID = 63635 CSSM_CSS_IP = 30.*.*.227:9341 CSSM_CSS_IP = 30.*.*.228:9343 CSSM_LOG_PATH = ../log CSSM_LOG_FILE_SIZE = 512 CSSM_LOG_SPACE_LIMIT = 2048
  • 运行:/llf/dm8/bin/dmcssm INI_PATH=/llf/dm8/config/dmcssm.ini
创建dmarch.ini
  • dmdba1操作,两节点都要操作
  • 机器A
#修改dm.ini vi /llf/dm8/config/dsc0_config/dm.ini ARCH_INI = 1 # 在同目录下新建dmarch.ini [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/ARCH/DMDSC0/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048 #可根据实际磁盘大小增加 [ARCHIVE_REMOTE] ARCH_TYPE = REMOTE ARCH_DEST = DSC1 ARCH_INCOMING_PATH = +DMDATA/ARCH/DMDSC1/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048
  • 机器B
#修改dm.ini vi /llf/dm8/config/dsc1_config/dm.ini ARCH_INI = 1 # 在同目录下新建dmarch.ini [ARCHIVE_LOCAL] ARCH_TYPE = LOCAL ARCH_DEST = +DMDATA/ARCH/DMDSC1/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048 [ARCHIVE_REMOTE] ARCH_TYPE = REMOTE ARCH_DEST = DSC0 ARCH_INCOMING_PATH = +DMDATA/ARCH/DMDSC0/arch ARCH_FILE_SIZE = 1024 ARCH_SPACE_LIMIT = 2048
  • 二者在本地归档路径,远程归档实例名,远程归档路径几处有不同
注册CSS、ASM、DMSERVER和监视器服务
  • root操作
  • 两节点均需注册
  • 机器A
/llf/dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /llf/dm8/config/dmdcr.ini -p CSS /llf/dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /llf/dm8/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM /llf/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /llf/dm8/config/dsc0_config/dm.ini -dcr_ini /llf/dm8/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC -- 注册监视器服务 /llf/dm8/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /llf/dm8/config/dmcssm.ini -p Monitor
  • 机器B
/llf/dm8/script/root/dm_service_installer.sh -t dmcss -dcr_ini /llf/dm8/config/dmdcr.ini -p CSS /llf/dm8/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /llf/dm8/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM /llf/dm8/script/root/dm_service_installer.sh -t dmserver -dm_ini /llf/dm8/config/dsc1_config/dm.ini -dcr_ini /llf/dm8/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC
集群启停
  • 使用dmdba1操作
启动
  • 两节点css->两节点asm->两节点dmserver
  • 两节点按顺序执行以下命令
/llf/dm8/bin/DmCSSServiceCSS start /llf/dm8/bin/DmASMSvrServiceASM start /llf/dm8/bin/DmServiceDSC start
停止
  • 两节点dmserver->两节点asm->两节点css
  • 通过服务停:两节点按顺序执行以下命令
/llf/dm8/bin/DmServiceDSC stop /llf/dm8/bin/DmASMSvrServiceASM stop /llf/dm8/bin/DmCSSServiceCSS stop
  • 通过监视器停
# 启动监视器 /llf/dm8/bin/dmcssm INI_PATH=/llf/dm8/config/dmcssm.ini # 停止数据库实例服务 ep stop GRP_DSC # 停止asm服务 ep stop GRP_ASM # 退出监视器 exit # 两节点分别执行,停止css服务 /llf/dm8/bin/DmCSSServiceCSS stop
注意
  • DSC 正常停库必须 2 节点同时停止
  • ASM 服务在任意节点停止,2 个节点的 ASM 服务都会停止,为了保险起见,可以两边都执行停止命令。
  • 服务全部停止后,要检查后台进程是否全部停止。

DSC搭建过程报错及解决

ASM启动失败
问题描述

dsc集群搭建过程中启动asm失败,查看log目录下的日志dm_ASM0_202508.log,ASM0是ASM节点名,202508是操作时间。
0806error11.png
发现无法连接另一个节点,30.30.30.128是心跳地址,7237是ASM端口。

解决方案

此时采用如下命令查看本机ip。

ip r

发现本机心跳地址为30.*.*.227,再查询另一个节点的心跳地址为30.*.*.228,说明是心跳地址配置错误导致连接不上。
修改dmdcr_cfg.ini和dmasvrmal.ini中心跳地址相关配置,然后再次启动css和asm服务,发现asm可以成功启动。
0806error13.png
0806error14.png

CSS启动失败
问题描述

dsc集群搭建过程中css启动失败报错信息如下:

DMCSS V8 comm_create_lsnr_sockets_low failed to create socket or listen port:9341, errno:107. css_lsnr_thread failed to create socket or bind ip:*.*.*.71 port:9341, errno:107. dmcss startup failed:[CODE:-l],error info:css_lsnr_create_sock failed,code:[-1]

显示创建或监听端口9341失败,9341是当前服务器在dmdcr_cfg.ini文件中配置的DCR_EP_PORT。

解决方案

因为之前有过成功启动的经历,所以这里出现问题考虑是端口被占用,先查询一下是否有启动的css进程。

ps -ef | grep css

发现确实是之前的css服务没有关闭,于是关闭之前的css服务,再次启动发现可以成功启动。

ASM启动失败2
问题描述

搭建dsc集群创建dmdcr_cfg.ini,dmasvrmal.ini,dmdcr.ini之后,准备启动css和asm服务,但是asm服务启动失败,表现为两节点前台启动asm之后卡住,没有显示the ASM server is Ready。

解决方案

搭建dsc集群的两台机器ip最后分别是71和72,在71机器上查看日志,进入安装目录log文件夹中(刚开始以为是71服务器,所以进行了如下操作,其实查询的是72服务器),查询到的报错信息如下所示:

... [ERROR] dmasmsvr ... Can't connect to DM server on '*.*.*.72' port(7237) errno(111)

报错信息显示无法连接72服务器的7237端口。之后查询防火墙状态,发现防火墙已关闭,再尝试从服务器ping 72服务器,发现可以ping通。查询72服务器的7237端口也没有占用,此时猜想并不是网络不通的原因,开始排查配置文件。
在dmdcr_cfg.ini和dmasvrmal.ini文件中71服务器是第0个节点,72服务器是第1个节点,dmasvrmal.ini文件内容如下:

[MAL_INST1] MAL_INST_NAME = ASM0 MAL_HOST = *.*.*.71 #心跳地址 MAL_PORT = 7236 #MAL监听端口 [MAL_INST2] MAL_INST_NAME = ASM1 MAL_HOST = *.*.*.72 MAL_PORT = 7237

dmdcr.ini文件中内容如下:

# 71服务器 DMDCR_PATH = /dev/iscsi/dm-dcrdg-asm01 DMDCR_MAL_PATH =/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 1 DMDCR_ASM_TRACE_LEVEL=2 #ASM 重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 0 #DMDCR_ASM_STARTUP_CMD = /dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdba/config/dmdcr.ini #DB 重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 0 #DMDCR_DB_STARTUP_CMD = /dmdba/dmdbms/bin/dmserver path=/dmdba/config/dsc1_config/dm.ini dcr_ini=/dmdba/config/dmdcr.ini # 72服务器 DMDCR_PATH = /dev/iscsi/dm-dcrdg-asm01 DMDCR_MAL_PATH =/dmdba/config/dmasvrmal.ini #dmasmsvr 使用的 MAL 配置文件路径 DMDCR_SEQNO = 0 DMDCR_ASM_TRACE_LEVEL=2 #ASM 重启参数,命令行方式启动 #DMDCR_ASM_RESTART_INTERVAL = 0 #DMDCR_ASM_STARTUP_CMD = /dmdba/dmdbms/bin/dmasmsvr dcr_ini=/dmdba/config/dmdcr.ini #DB 重启参数,命令行方式启动 #DMDCR_DB_RESTART_INTERVAL = 0 #DMDCR_DB_STARTUP_CMD = /dmdba/dmdbms/bin/dmserver path=/dmdba/config/dsc0_config/dm.ini dcr_ini=/dmdba/config/dmdcr.ini

可以发现此时71服务器的DMDCR_SEQNO为1,而72服务器的为0,与前面两个配置文件相反,而初始化磁盘组使用的是dmdcr_cfg.ini,此时配置文件序号不一致导致asm启动失败。之后将dmdcr.ini文件中的序号修改,改为71服务器上DMDCR_SEQNO为0,而72服务器为1,还有命令行方式启动的dm.ini路径也要修改,再次启动css和asm可以成功启动。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服