注册
DSC双节点集群搭建
培训园地/ 文章详情 /

DSC双节点集群搭建

DM_880930 2026/08/19 164 0 0

一、搭建前准备

创建四块磁盘并挂载到两台虚拟机上。

  1. dcr  存储集群配置元信息,供所有节点识别并加入集群。主要存放dmdcr.ini 配置文件、集群拓扑、节点实例名及端口映射等。
  2. vote 通过磁盘心跳和投票机制,在网络故障时裁决节点存活性,决定是否踢出异常节点,防止集群脑裂。主要存放临时性的节点健康状态、投票记录与通信消息。
  3. data 数据存储核心:存放所有业务数据文件,由所有 DSC 节点共享读写。
  4. log  事务持久化:记录每个节点的 Redo 日志,用于故障恢复和保障 ACID 特性。
    image.png
    image.png
    修改虚拟机的.vmx文件,在文件后面加上以下配置
disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.DataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"
  • disk.locking
    "FALSE" 解除磁盘独占锁。VMware默认锁定磁盘防多机写入,但DSC集群要求多个节点同时读写同一份共享存储,必须关闭锁定。
  • scsi1.sharedBus
    "virtual" 启用总线共享模式。让所有节点连接在同一根虚拟SCSI总线上,才能正确识别并使用SCSI-3预留协议进行磁盘并发控制。
  • diskLib.dataCacheMaxSize
    "0" 禁用ESXi主机的数据缓存,防止写入数据暂存于宿主机内存而未及时落盘,确保写入的即时性。
  • diskLib.dataCacheMaxReadAheadSize
    "0" 禁用预读缓存,防止节点读到ESXi提前缓存但尚未同步的陈旧数据,确保读数据的实时一致性。
  • diskLib.DataCacheMinReadAheadSize
    "0" 与MaxReadAheadSize配合,彻底禁用预读功能,双重保障缓存机制被完全关闭。
  • diskLib.maxUnsyncedWrites
    "0" 强制写入操作立即同步落盘,不允许任何未同步的写入在缓存中滞留,确保数据持久性(ACID中的Durability)。
    获取磁盘的UUID并配置udev规则,为磁盘绑定软链接
    image.png
    image.png
    注意:如果创建的软链接和实际磁盘放在同一个目录/dev下,后续初始化asm磁盘时会在这个目录下同时扫描到软链接和实际磁盘,报too many disk的错误;所以在/dev下再创建一个目录存放软链接,后文的软链接在/dev/dm目录下。

二、编写核心配置文件

1、dmdcr_cfg.ini
两节点配置完全相同。

DCR_N_GRP = 3
DCR_VTD_PATH = /dev/dm/asm-vote    # VOTE盘链接
DCR_OGUID = 210715             # 集群唯一标识
[GRP]
 DCR_GRP_TYPE = CSS
 DCR_GRP_NAME = GRP_CSS
 DCR_GRP_N_EP = 2
 DCR_GRP_DSKCHK_CNT = 60
[GRP_CSS]
 DCR_EP_NAME = CSS0
 DCR_EP_HOST = 192.168.10.123    
 DCR_EP_PORT = 9341
[GRP_CSS]
 DCR_EP_NAME = CSS1
 DCR_EP_HOST = 192.168.10.156    
 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
 DCR_EP_SHM_KEY = 93360
 DCR_EP_SHM_SIZE = 20
 DCR_EP_HOST = 192.168.10.123
 DCR_EP_PORT = 9349
 DCR_EP_ASM_LOAD_PATH = /dev/dm
[GRP_ASM]
 DCR_EP_NAME = ASM1
 DCR_EP_SHM_KEY = 93361
 DCR_EP_SHM_SIZE = 20
 DCR_EP_HOST = 192.168.10.156
 DCR_EP_PORT = 9351
 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 = 60
[GRP_DSC]
 DCR_EP_NAME = DSC0
 DCR_EP_SEQNO = 0
 DCR_EP_PORT = 5216
 DCR_CHECK_PORT = 9741
[GRP_DSC]
 DCR_EP_NAME = DSC1
 DCR_EP_SEQNO = 1
 DCR_EP_PORT = 5216
 DCR_CHECK_PORT = 9742

2、dmasvrmal.ini
两节点配置完全相同。

[MAL_INST0]
 MAL_INST_NAME = ASM0
 MAL_HOST = 192.168.10.123        # 节点1的心跳IP
 MAL_PORT = 11266
[MAL_INST1]
 MAL_INST_NAME = ASM1
 MAL_HOST = 192.168.10.156        # 节点2的心跳IP
 MAL_PORT = 11267

3、dmdcr.ini
节点一配置如下:

DMDCR_PATH = /dev/dm/asm-dcr
DMDCR_MAL_PATH = /home/dmdba/DSC/dmasvrmal.ini
DMDCR_SEQNO = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/DSC/dmdcr.ini
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/DSC/DSC0/dm.ini dcr_ini=/home/dmdba/DSC/dmdcr.ini

节点二配置如下:

DMDCR_PATH = /dev/dm/asm-dcr
DMDCR_MAL_PATH = /home/dmdba/DSC/dmasvrmal.ini
DMDCR_SEQNO = 1
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/DSC/dmdcr.ini
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/DSC/DSC1/dm.ini dcr_ini=/home/dmdba/DSC/dmdcr.ini

DMDCR_SEQNO参数为节点序列号,用于在集群中唯一标识节点,两节点要不同。

三、共享磁盘ASM初始化

只在一个节点操作。
image.png
准备动作,使用 dmasmcmd 命令行工具将一块物理共享磁盘标记、初始化为可被ASM使用的裸设备,为磁盘建立ASM元数据,让ASM能够识别和管理这块磁盘。

四、启动集群服务

1、启动CSS服务(两个节点都要操作)
image.png
2、启动ASM服务(两个节点都要操作)
image.png
image.png
3、创建ASM磁盘组(在一个节点操作)
image.png
最终创建动作,使用 dmasmtool 命令行工具将一块或多块已初始化好的ASM磁盘,组合成一个逻辑的、统一的存储容器(即磁盘组),将ASM磁盘组织成数据库能直接使用的数据存储池。DSC数据库的数据文件和日志文件最终是存放在磁盘组里的。
4、启动数据库服务
配置数据库初始化文件并初始化数据库。

db_name = DSC
system_path = +DMDATA/data
system = +DMDATA/data/dsc/system.dbf
system_size = 128
roll = +DMDATA/data/dsc/roll.dbf
roll_size = 128
main = +DMDATA/data/dsc/main.dbf
main_size = 128
ctl_path = +DMDATA/data/dsc/dm.ctl
ctl_size = 8
log_size = 256
dcr_path = /dev/dm/dcr
dcr_seqno = 0
auto_overwrite = 1
SYSDBA_PWD = DMdatabase8
[DSC0]
config_path = /home/dmdba/DSC/DSC0
port_num = 5238
mal_host = 192.168.10.123
mal_port = 11260
log_path = +DMLOG/log/dsc0_log01.log
[DSC1]
config_path = /home/dmdba/DSC/DSC1
port_num = 5239
mal_host = 192.168.10.156
mal_port = 11261
log_path = +DMLOG/log/dsc1_log01.log

image.png

启动数据库服务。
image.png
image.png
注意:两个实例要同时打开
image.png
image.png
在节点1写入的数据节点2能够查看到。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服