DSC集群搭建
2026/7/31 21:26:23 网站建设 项目流程

1.集群规划

三机器的规划如下表:

配置项A机器B机器C机器
业务IP***
内部数据交换网络IP***
dmdcr_cfg — CSS — DCR_EP_NAMECSS0CSS1CSS2
dmdcr_cfg — CSS — DCR_EP_HOST***
dmdcr_cfg — CSS — DCR_EP_PORT112861128611286
dmdcr_cfg — ASM — DCR_EP_NAMEASM0ASM1ASM2
dmdcr_cfg — ASM — DCR_EP_HOST***
dmdcr_cfg — ASM — DCR_EP_PORT112761127611276
dmdcr_cfg — DB — DCR_EP_NAMEDSC0DSC1DSC2
dmdcr_cfg — DB — DCR_EP_PORT523452345234
dmasvrmal — MAL_INST_NAMEASM0ASM1ASM2
dmasvrmal — MAL_HOST***
dmasvrmal — MAL_PORT112661126611266
dminit — 实例名DSC0DSC1DSC2
dminit — PORT_NUM523452345234
dminit — MAL_HOST***
dminit — MAL_PORT112461124611246
OGUID210715210715210715
监视器IP*
监视器的ip为*

2.准备共享存储

本次使用虚拟机软件创建共享虚拟磁盘,首先创建共享虚拟磁盘文件,在C:\Program Files (x86)\VMware\目录下执行如下命令:
创建一个20GB的数据磁盘

vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmdata.vmdk"

创建DCR磁盘

vmware-vdiskmanager.exe-c-s2Gb-alsilogic-t2"C:\DSC_SharedDisk\dmdcr.vmdk"

创建Vote磁盘

vmware-vdiskmanager.exe-c-s2Gb-alsilogic-t2"C:\DSC_SharedDisk\dmvote.vmdk"

创建LOG盘

vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmlog.vmdk"

创建ARCH盘

vmware-vdiskmanager.exe-c-s20Gb-alsilogic-t2"C:\DSC_SharedDisk\dmarch.vmdk"


然后为每台虚拟机添加共享磁盘:

修改每台虚拟机的 .vmx 配置文件,加入以下内容,确保多个虚拟机可以同时访问到磁盘:

scsi0.sharedBus="virtual"diskLib.dataCacheMaxSize="0"diskLib.dataCacheMaxReadAheadSize="0"diskLib.DataCacheMinReadAheadSize="0"diskLib.dataCachePageSize="4096"diskLib.maxUnsyncedWrites="0"


重启虚拟机,执行fdisk -l,三台机器均可以显示五个磁盘,说明共享存储配置成功:

3.块设备UUID绑定(UUID方式)

在三台机器上/etc/udev/rules.d目录下分别先创建uuid.sh文件,内容如下,赋权执行该脚本,生成绑定配置文件88-dm-asmdevices.rules,修改别名SYMLINK与五块磁盘对应:

curr=$(cd"$(dirname"$0")";pwd)rm-f$curr/88-dm-asmdevices.rulesforiinb c d e f;# 从b开始,跳过系统盘sdadoecho"KERNEL==\"sd?\",SUBSYSTEM==\"block\", PROGRAM==\"/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name\",RESULT==\"`/usr/lib/udev/scsi_id--whitelisted--replace-whitespace--device=/dev/sd$i`\", SYMLINK+=\"dm/asm-disk$i\",OWNER=\"dmdba\", GROUP=\"dinstall\",MODE=\"0660\"">>$curr/88-dm-asmdevices.rulesdone
udevadm trigger--type=devices--action=change udevadm control --reload-rules

让刷新规则文件,使其生效,执行

chowndmdba:dinstall /dev/dm/asm-*-R

授权,然后执行命令

blockdev--getsize64/dev/dm/asm-dmdcr(dmvote/dmdata/dmlog/dmarch)

验证显示设备UUID绑定成功:

4.集群搭建

三台服务器上分别在数据库安装目录下(/dm/dmdba/dmdbms)配置dsc_config/dmdcr_cfg.ini内容如下:

DCR_N_GRP=3##集群环境有多少个 GROUP,范围:1~16DCR_VTD_PATH=/dev/dm/asm-dmvote##规划为 vote 的磁盘DCR_OGUID=210715## 消息标识,一个组里面只有一个。[GRP]#新建一个 GROUPDCR_GRP_TYPE=CSS##组类型(CSS/ASM/DB)DCR_GRP_NAME=GRP_CSS##组名DCR_GRP_N_EP=3##组内节点个数DCR_GRP_DSKCHK_CNT=65##磁盘心跳容错时间,单位:秒[GRP_CSS]DCR_EP_NAME=CSS0##CSS 节点名DCR_EP_HOST=*##心跳地址DCR_EP_PORT=11286##CSS 端口[GRP_CSS]DCR_EP_NAME=CSS1 DCR_EP_HOST=* DCR_EP_PORT=11286[GRP_CSS]DCR_EP_NAME=CSS2##CSS 节点名DCR_EP_HOST=*##心跳地址DCR_EP_PORT=11286##CSS 端口[GRP]DCR_GRP_TYPE=ASM DCR_GRP_NAME=GRP_ASM DCR_GRP_N_EP=3DCR_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=*##心跳地址DCR_EP_PORT=11276##ASM 端口DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP_ASM]DCR_EP_NAME=ASM1 DCR_EP_SHM_KEY=42425DCR_EP_SHM_SIZE=1024DCR_EP_HOST=* DCR_EP_PORT=11276DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP_ASM]DCR_EP_NAME=ASM2 DCR_EP_SHM_KEY=42426DCR_EP_SHM_SIZE=1024DCR_EP_HOST=* DCR_EP_PORT=11276DCR_EP_ASM_LOAD_PATH=/dev/dm[GRP]DCR_GRP_TYPE=DB DCR_GRP_NAME=GRP_DSC DCR_GRP_N_EP=3DCR_GRP_DSKCHK_CNT=57[GRP_DSC]DCR_EP_NAME=DSC0##实例名,和 dm.ini 的 INSTANCE_NAME 一致DCR_EP_SEQNO=0##组内序号,不能重复DCR_EP_PORT=5234##实例端口,和 dm.ini 的 PORT_NUM 一致[GRP_DSC]DCR_EP_NAME=DSC1 DCR_EP_SEQNO=1DCR_EP_PORT=5234[GRP_DSC]DCR_EP_NAME=DSC2 DCR_EP_SEQNO=2DCR_EP_PORT=5234

初始化磁盘,在机器A的bin目录下执行./dmasmcmd进入ASM终端,执行下述命令进行初始化:

create dcrdisk'/dev/dm/asm-dmdcr''dcr'create votedisk'/dev/dm/asm-dmvote''vote'init dcrdisk'/dev/dm/asm-dmdcr'from'/dm/dmdba/dmdbms/dsc_config/dmdcr_cfg.ini'identified by'Zh010922'init votedisk'/dev/dm/asm-dmvote'from'/dm/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'

在机器A的dsc_config下创建dmasvrmal.ini,内容如下,并cp到三台机器的dsc_config/DSC0(DSC1/DSC2)目录下

[MAL_INST0]MAL_INST_NAME=ASM0 MAL_HOST=*#心跳地址MAL_PORT=11266#MAL 监听端口[MAL_INST1]MAL_INST_NAME=ASM1 MAL_HOST=* MAL_PORT=11266[MAL_INST2]MAL_INST_NAME=ASM2 MAL_HOST=* MAL_PORT=11266

在三台机器的dsc_config目录下分别创建dmdcr.ini文件,内容如下(以机器a为例):

DMDCR_PATH=/dev/dm/asm-dmdcr DMDCR_MAL_PATH=/dm/dmdba/dmdbms/dsc_config/DSC0/dmasvrmal.ini DMDCR_SEQNO=0#机器b,c分别为1,2DMDCR_AUTO_OPEN_CHECK=111DMDCR_ASM_TRACE_LEVEL=2

在三个节点启动DMCSS、DMASM服务,分别执行命令

/dm/dmdba/dmdbms/bin/dmcssDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini

启动dmcss服务,执行命令

/dm/dmdba/dmdbms/bin/dmasmsvrDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini

启动dmasmsvr服务:

在机器A的bin目录下启动dmasmtool工具,执行命令

/dm/dmdba/dmdbms/bin/dmasmtoolDCR_INI=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini

创建DMASM磁盘组,执行命令

create diskgroup'DMLOG'asmdisk'/dev/dm/asm-dmlog'

创建日志磁盘组,执行命令

create diskgroup'DMDATA'asmdisk'/dev/dm/asm-dmdata'

创建数据磁盘组,执行命令

create diskgroup'DMARCH'asmdisk'/dev/dm/asm-dmarch'

创建归档磁盘组:

分别在三台机器的dsc_config目录下创建dminit.ini文件,以机器A为例,内容如下:

DB_NAME=DSC SYSDBA_PWD=* SYSAUDITOR_PWD=* SYSTEM_PATH=+DMDATA/data SYSTEM=+DMDATA/data/SYSTEM.dbf SYSTEM_SIZE=1024ROLL=+DMDATA/data/ROLL.dbf ROLL_SIZE=10000MAIN=+DMDATA/data/MAIN.dbf MAIN_SIZE=1024CTL_PATH=+DMDATA/data/dm.ctl CTL_SIZE=8LOG_SIZE=2048DCR_PATH=/dev/dm/asm-dmdcr DCR_SEQNO=0AUTO_OVERWRITE=1PAGE_SIZE=32EXTENT_SIZE=16BLANK_PAD_MODE=1[DSC0]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC0 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC0_LOG01.log LOG_PATH=+DMLOG/DSC0_LOG02.log[DSC1]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC1 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC1_LOG01.log LOG_PATH=+DMLOG/DSC1_LOG02.log[DSC2]CONFIG_PATH=/dm/dmdba/dmdbms/dsc_config/DSC2 PORT_NUM=5234MAL_HOST=* MAL_PORT=11246LOG_PATH=+DMLOG/DSC2_LOG01.log LOG_PATH=+DMLOG/DSC2_LOG02.log

在机器A上初始化,执行命令

/dm/dmdba/dmdbms/bin/dminitcontrol=/dm/dmdba/dmdbms/dsc_config/dminit.ini

在dsc_config/DSC0目录下生成了实例对应的dm.ini等文件,同时还生成了机器B和C对应的配置文件DSC1和DSC2,利用共享文件夹分别cp到对应机器。

三节点修改各自dm.ini的ARCH_INI为1开启数据库归档功能,然后创建各自的归档配置文件dmarch.ini,以机器A为例,内容如下:

ARCH_WAIT_APPLY=0[ARCHIVE_LOCAL1]ARCH_TYPE=LOCAL ARCH_DEST=+DMARCH/ARCH/DSC2/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400[ARCHIVE_REMOTE1]ARCH_TYPE=REMOTE ARCH_DEST=DSC0 ARCH_INCOMING_PATH=+DMARCH/ARCH/DSC0/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400[ARCHIVE_REMOTE2]ARCH_TYPE=REMOTE ARCH_DEST=DSC1 ARCH_INCOMING_PATH=+DMARCH/ARCH/DSC1/arch ARCH_FILE_SIZE=2048ARCH_SPACE_LIMIT=102400

启动DMSERVER服务,由DMCSS没有配置自动拉起dmserver的功能,需要手动启动三个节点的实例服务,以机器A为例,在bin目录下执行命令

./dmserver /dm/dmdba/dmdbms/dsc_config/DSC0/dm.inidcr_ini=/dm/dmdba/dmdbms/dsc_config/dmdcr.ini

在机器A的 dmcss 终端执行show命令,显示CSS组全部open,DMCSS集群正常,CSS0为控制节点,ASM组也全部open,DMASM集群正常,ASM0为控制节点,DB组也全补open,DMDSC集群正常,DSC0为控制节点:

为了方便管理,分别在三台机器上注册CSS、ASM、DMSERVER后台服务,以机器A为例,在root下执行命令:

/dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmcss-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-pCSS /dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmasmsvr-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-yDmCSSServiceCSS.service-pASM /dm/dmdba/dmdbms/script/root/dm_service_installer.sh-tdmserver-dm_ini/dm/dmdba/dmdbms/dsc_config/DSC0/dm.ini-dcr_ini/dm/dmdba/dmdbms/dsc_config/dmdcr.ini-yDmASMSvrServiceASM.service-pDSC

5.配置监视器

在另外一台机器192.168.138.131的bin目录下创建DSC监视器配置文件dmcssm.ini,内容如下:

CSSM_OGUID=210715CSSM_CSS_IP=* CSSM_CSS_IP=* CSSM_CSS_IP=* CSSM_LOG_PATH=/dm/dmdba/dmdbms/log CSSM_LOG_FILE_SIZE=512CSSM_LOG_SPACE_LIMIT=2048

为了优化集群在操作系统假死时对节点状态的判断机制,给集群设置setcap权限,在每台机器的root下分别执行命令:

setcap cap_net_raw,cap_net_admin=eip /dm/dmdba/dmdbms/bin/dmserver setcap cap_net_raw,cap_net_admin=eip /dm/dmdba/dmdbms/bin/dmasmsvr

验证授权成功:

getcap /dm/dmdba/dmdbms/bin/dmserver getcap /dm/dmdba/dmdbms/bin/dmasmsvr


bin目录下执行

./dmcssmINI_PATH=./dmcssm.ini

以前台方式启动监视器,执行show,显示DSC集群状态正常:

https://eco.dameng.com

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询