注册
DSC集群简介及搭建实践
培训园地/ 文章详情 /

DSC集群简介及搭建实践

赵国伟 2025/05/13 37 0 0

一、DSC 集群概述

DMDSC 集群是一个多实例、单数据库的系统。多个数据库实例可以同时访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,获得完整的数据库服务。数据文件、控制文件在集群系统中只有一份,不论有几个节点,这些节点都平等地使用这些文件,这些文件保存在共享存储上。每个节点有自己独立的联机日志和归档日志,联机日志和归档日志都需要保存在共享存储上。

1.1架构

1111.png

1.2 基本概念

1.2.1 DMDSC 集群

  DMDSC 集群由若干数据库实例组成,这些实例间通过网络(MAL 链路)连接,通过一个特殊的软件(DMCSS,集群同步服务)的协助,共同操作一个数据库。
从外部用户视角来看,他们看到的只是一个数据库。数据文件、控制文件等文件在集群中只有一份,所有节点平等地使用这些数据文件。这份数据存放在共享存储上,每个服务器通过高速共享存储网络连接到共享存储上。

1.2.2 DM 自动存储管理器

  DM 自动存储管理器(DM Auto Storage Manager,简称 DMASM)是一个专用用来DM8 数据共享集群为块设备管理文件的分布式文件系统。使用 DMASM 文件系统可以灵活地在块设备上创建、删除、扩展、截断文件,不用担心空间不足(可以通过在线增加块设备的磁盘来扩展空间)或空间浪费;不用考虑文件个数限制;可以方便地查看空间使用情况。
  DMDSC 支持多个节点同时访问、修改 DMASM 中的数据文件。
  DMASM 不是一个通用的文件系统,应用程序只能通过 DMASMAPI 接口访问。理论上通过 DMASMAPI 接口可以存放任何文件,但在 DMDSC 集群中,一般只建议将需要在节点间共享访问的文件存在 DMASM 中,如数据文件、联机 REDO 日志文件、控制文件等。归档 REDO 日志文件、备份集文件也可以考虑保存到 DMASM 中,避免还原、恢复等操作时节点间的文件拷贝,简化备份、还原操作。其他的一些本地配置文件比如 DM.INI 等建议保存在本地磁盘中。
  DMDSC 集群中若配置 DMASM,则要求 DMASM 站点数和 DMCSS 站点数一致,且只能存在一个 DMCSS 组和一个 DMASM 组。

1.2.3 DM 集群同步服务

  DM 集群同步服务(DM Cluster Synchronization Services,简称 DMCSS)是一款集群控制软件,是 DMDSC 集群应用的基础。DMCSS 专门负责监控集群中各个节点的运行状态,主要功能包括集群环境中节点的启动、故障处理、节点重加入等操作。每个 DMDSC 集群或 DMASM 集群节点都必须配置一个 DMCSS 服务。这些 DMCSS服务又共同构成一个 DMCSS 集群。单节点应用时,可以不配置 DMCSS。

1.2.4 DM 集群监视器

  DM 集群监视器(DM Cluster Synchronization Services Monitor,简称 DMCSSM)用来监控整个集群的状态信息。DMCSSM 与 DMCSS 相互通信,从 DMCSS 处获取整个集群系统的状态信息。DMCSSM提供一系列管理维护集群的命令。
  配置了 DMCSS 的集群中,可配置 0~10 个 DMCSSM。为了防止硬件损坏导致 DMCSSM和其他服务器同时故障,建议用户将 DMCSSM 和其他服务器分开放置,DMCSSM 可单独放置在一台机器上。

1.2.5心跳机制

  DMCSS 的心跳机制(Heartbeat)是通过 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)的 Disk Heartbeat 实现。心跳机制有最大时延,只有超过最大时延,才认为监测对象故障。

1.2.6 MAL链路

  MAL 系统是达梦数据库基于 TCP 协议实现的一种内部通信机制,具有可靠、灵活、高效的特性。使用 DMASM 文件系统的 DMDSC 集群中存在两套 MAL 系统,DMASM 服务器之间配置一套 MAL 系统,DMSERVER 服务器之间配置一套 MAL 系统。两套 MAL 系统工作原理相同:一旦 MAL 链路出现异常,DMCSS 会进行裁定,并从集群中踢出一个节点,保证集群环境正常运行。

1.2.7共享内存

  共享内存是一种快速、高效的进程间通信手段。所谓共享内存,就是同一块物理内存被映射到多个进程的地址空间,进程 A 可以即时看到进程 B 对共享内存的修改,反之亦然。
  DMASM 服务器进程和 DMASM 客户端进程之间通过共享内存方式共享ASM 文件到实际磁盘的映射关系。实例一般是由一组正在运行的 DM 后台进程/线程以及一个大型的共享内存组成。简单来说,实例就是操作 DM 数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。
  DM 数据库存储在服务器的磁盘上,而 DM 实例则存储于服务器的内存中。通过运行 DM实例,可以操作 DM 数据库中的内容。在任何时候,一个实例只能与一个数据库进行关联(装载、打开或者挂起数据库)。在大多数情况下,一个数据库也只有一个实例对其进行操作。但是在 DM 数据共享集群(DMDSC)中,多个实例可以同时装载并打开一个数据库(位于一组由多台服务器共享的物理磁盘上)。此时,我们可以同时从多台不同的计算机访问这个数据库

二、DMDSC 搭建

2.1 资源规划

1744621348049.png

2.2 环境准备

2.2.1 虚拟机配置共享磁盘

110节点:
进入虚拟机设置。点击添加 > 硬盘 > SCSI(推荐) > 创建新虚拟磁盘。
设置磁盘大小(例如20GB),选择立即分配磁盘空间(可选)。
在磁盘模式中选择 Independent,并勾选 Persistent(持久化模式)。
编辑虚拟机文件 DMDSC-1.vmxf 末尾添加如下内容:

diskLib.dataCacheMaxSize=0
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096
diskLib.maxUnsyncedWrites = "0"
disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
disk.EnableUUID = "TRUE"

111节点:
进入虚拟机设置。点击添加 > 硬盘 > SCSI(推荐) >使用现有虚拟磁盘
在磁盘模式中选择 Independent,并勾选 Persistent(持久化模式)。
编辑虚拟机文件 DMDSC-2.vmxf 末尾添加如下内容:

diskLib.dataCacheMaxSize=0
diskLib.dataCacheMaxReadAheadSize=0
diskLib.dataCacheMinReadAheadSize=0
diskLib.dataCachePageSize=4096
diskLib.maxUnsyncedWrites = "0"
disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
disk.EnableUUID = "TRUE"

启动虚拟机查看磁盘:
110:

[root@dmdsc-1 ~]# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000cc1d0

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sde: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 6442 MB, 6442450944 bytes, 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

111:

[root@dmdsc-2 ~]# fdisk -l

Disk /dev/sdc: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdb: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000cc1d0

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     4810751     2097152   82  Linux swap / Solaris
/dev/sda3         4810752    41943039    18566144   83  Linux

Disk /dev/sde: 6442 MB, 6442450944 bytes, 12582912 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk /dev/sdd: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

2.2.2 创建用户

使用 root 用户创建用于搭建环境的用户和组,以下两机器都要做。

[root@dmdsc-2 ~]# groupadd dmdba
[root@dmdsc-2 ~]# useradd -g dmdba dmdba
[root@dmdsc-2 ~]#  passwd dmdba
Changing password for user dmdba.
New password: ******
Retype new password: ******
passwd: all authentication tokens updated successfully.

2.2.3 目录规划

两机器都要做。
使用 dmdba 用户创建用于 DSC 环境搭建的目录: /home/dmdba/dmdsc
DM 执行码和工具存放于目录:/home/dmdba/dmdsc/bin。
配置文件存放于目录:
110 机器 :/home/dmdba/dmdsc/data/DSC01
111 机器 :/home/dmdba/dmdsc/data/DSC02
110 节点:

[dmdba@dmdsc-1 ~]$ mkdir -p dmdsc/bin dmdsc/data/DSC01

111 节点:

[dmdba@dmdsc-2 ~]$ mkdir -p dmdsc/bin dmdsc/data/DSC02

2.2.4 磁盘准备

1. 使用 UDEV 工具来固定磁盘。(两节点都要做)
通过 scsi_id 获取磁盘信息。
110节点:

[root@dmdsc-1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
36000c295fff29b4c6700c8f6603f8077
[root@dmdsc-1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
36000c2973bfbfb3cd4727436e76fe2c1
[root@dmdsc-1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd
36000c2979a910cf5f59cc8cac4ded54c
[root@dmdsc-1 ~]# /usr/lib/udev/scsi_id -g -u /dev/sde
36000c29134e98aab8226d4d2458bc8c3

111节点:

[root@dmdsc-2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdb
36000c295fff29b4c6700c8f6603f8077
[root@dmdsc-2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdc
36000c2973bfbfb3cd4727436e76fe2c1
[root@dmdsc-2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sdd
36000c29134e98aab8226d4d2458bc8c3
[root@dmdsc-2 ~]# /usr/lib/udev/scsi_id -g -u /dev/sde
36000c2979a910cf5f59cc8cac4ded54c

以上可以看出 110 的 /dev/sdd,/dev/sde 和 111 的 /dev/sdd,/dev/sde错位对应其他磁盘两节点一致。
本步骤的目的是为了在下一步中将相同 scsi_id 的磁盘创建相同的盘符。例如,下一步骤中 RESULT=="234074fa79680f431"即为将 scsi_id 为 234074fa79680f431 的磁盘命名为 DCR 磁盘,并将 DCR 磁盘软链接到/dev_DSC2 目录下并命名为 DCR。
2. 创建磁盘链接(两节点保持一致)
编写/etc/udev/rules.d/66-dmdevices.rules 配置信息,创建磁盘链接。书写时一个 KERNEL 为一行,不能换行。

[root@dmdsc-1 ~]# vim /etc/udev/rules.d/66-dmdevices.rules
#DCR 磁盘配置,且在软链接之前创建文件夹 /dev_DSC2
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name",RESULT=="36000c295fff29b4c6700c8f6603f8077",SYMLINK+="DCR", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/\$name;mkdir -p /dev_DSC2; ln -s /dev/DCR /dev_DSC2/DCR'"
#VOTE 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name",RESULT=="36000c2973bfbfb3cd4727436e76fe2c1",SYMLINK+="VOTE", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/\$name; ln -s /dev/VOTE /dev_DSC2/VOTE'"
#DMDATA 磁盘配置
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name",RESULT=="36000c29134e98aab8226d4d2458bc8c3",SYMLINK+="DMDATA", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/\$name; ln -s /dev/DMDATA /dev_DSC2/DMDATA'"
#DMLOG 磁盘配置,且在搭建完成之后,将权限直接赋予 dmdba 组的 dmdba 用户
KERNEL=="sd*",SUBSYSTEM=="block",PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/\$name",RESULT=="36000c2979a910cf5f59cc8cac4ded54c",SYMLINK+="DMLOG", OWNER="dmdba", GROUP="dmdba", MODE="0660", RUN+="/bin/sh -c 'chown dmdba:dmdba /dev/\$name; ln -s /dev/DMLOG /dev_DSC2/DMLOG ; chown -R dmdba:dmdba /dev_DSC2'"

从配置信息可以看出,通过 scsi id 找到磁盘后,在 /dev/下命名了磁盘信息,然后再做软链接到 /dev_DSC2 下。目录路径必须以“/dev”开始,否则 DM不会认为这是使用物理磁盘的真实环境。之所以要软链接到独立目录,是因为 DMDSC 启动时会扫描目录下所有磁盘,如果目录中存在与当前 DMDSC 系统无关的磁盘,则 DMDSC 将启动失败。因此需要软链接到独立目录,保证该目录下仅包含当前 DMDSC 系统使用的共享存储磁盘,避免 DMDSC 启动失败。
3. 重启 systemd-udev-trigger 服务。

[root@dmdsc-1 ~]# systemctl restart systemd-udev-trigger
[root@dmdsc-2 ~]# systemctl restart systemd-udev-trigger

搭建之前磁盘权限信息如下:

[root@dmdsc-1 ~]#  ls -lth /dev_DSC2/
total 0
lrwxrwxrwx. 1 dmdba dmdba 10 Apr 10 23:49 DMLOG -> /dev/DMLOG
lrwxrwxrwx. 1 dmdba dmdba  9 Apr 10 23:49 VOTE -> /dev/VOTE
lrwxrwxrwx. 1 dmdba dmdba 11 Apr 10 23:40 DMDATA -> /dev/DMDATA
lrwxrwxrwx. 1 dmdba dmdba  8 Apr 10 23:40 DCR -> /dev/DCR
[root@dmdsc-2 ~]#  ls -lth /dev_DSC2/
total 0
lrwxrwxrwx. 1 dmdba dmdba  9 Apr 10 23:49 VOTE -> /dev/VOTE
lrwxrwxrwx. 1 dmdba dmdba 10 Apr 10 23:49 DMLOG -> /dev/DMLOG
lrwxrwxrwx. 1 dmdba dmdba 11 Apr 10 23:40 DMDATA -> /dev/DMDATA
lrwxrwxrwx. 1 dmdba dmdba  8 Apr 10 23:40 DCR -> /dev/DCR

三、搭建两节点 DMDSC

搭建的配置文件分别存放于 110 机器的/home/dmdba/dmdsc/data/DSC01 和
111 机器的/home/dmdba/dmdsc/data/DSC02 下。

3.1 配置文件dmdcr.ini

110机器 /home/dmdba/dmdsc/data/DSC01 下

[dmdba@dmdsc-1 DSC01]$ vim DMDCR_CFG.INI
DCR_N_GRP= 3
DCR_VTD_PATH=/dev_DSC2/VOTE
DCR_OGUID= 1071107589
[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 = CSS1
 DCR_EP_HOST = 10.12.10.110
 DCR_EP_PORT = 5436
[GRP_CSS]
 DCR_EP_NAME = CSS2
 DCR_EP_HOST = 10.12.10.111
 DCR_EP_PORT = 5436
[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= ASM1  # 必须与dmasvrmal.ini 中MAL_INST_NAME一致
DCR_EP_SHM_KEY= 64735
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 10.12.10.110
DCR_EP_PORT= 5336
DCR_EP_ASM_LOAD_PATH= /dev_DSC2
[GRP_ASM]
DCR_EP_NAME= ASM2 # 必须与dmasvrmal.ini 中MAL_INST_NAME一致
DCR_EP_SHM_KEY= 54736
DCR_EP_SHM_SIZE= 512
DCR_EP_HOST= 10.12.10.111
DCR_EP_PORT= 5336
DCR_EP_ASM_LOAD_PATH= /dev_DSC2
[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= DSC1  # 必须与dm.ini 中INSTANCE_NAME一致
DCR_EP_SEQNO= 0
DCR_EP_PORT= 5236
[GRP_DSC]
DCR_EP_NAME= DSC2  # 必须与dm.ini 中INSTANCE_NAME一致
DCR_EP_SEQNO= 1
DCR_EP_PORT= 5236

111节点 与 110的内容完全一样。保存到/home/dmdba/dmdsc/data/DSC02

3.2 110机器使用DMASMCMD初始化所有磁盘

[dmdba@dmdsc-1 ~]$ dmasmcmd
dmasmcmd V8
ASM>create dcrdisk '/dev_DSC2/DCR' 'DCR'
[TRACE]The ASM initialize dcrdisk /dev_DSC2/DCR to name DMASMDCR
Used time: 36.606(ms).
ASM>create votedisk '/dev_DSC2/VOTE' 'VOTE'
[TRACE]The ASM initialize votedisk /dev_DSC2/VOTE to name DMASMVOTE
Used time: 34.278(ms).
ASM>create asmdisk '/dev_DSC2/DMDATA' 'DMDATA'
[TRACE]The ASM initialize asmdisk /dev_DSC2/DMDATA to name DMASMDMDATA
Used time: 27.795(ms).
ASM>create asmdisk '/dev_DSC2/DMLOG' 'DMLOG'
[TRACE]The ASM initialize asmdisk /dev_DSC2/DMLOG to name DMASMDMLOG
Used time: 31.947(ms).
ASM>init dcrdisk '/dev_DSC2/DCR' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini' identified by 'DCRpsd_123'
[TRACE]DG 126 alloc extent for inode (0, 0, 1)
[TRACE]DG 126 alloc 4 extents for 0xfe000002 (0, 0, 2)->(0, 0, 5)
Used time: 231.148(ms).
ASM>init votedisk '/dev_DSC2/VOTE' from '/home/dmdba/dmdsc/data/DSC01/dmdcr_cfg.ini'
[TRACE]DG 125 alloc extent for inode (0, 0, 1)
[TRACE]DG 125 alloc 4 extents for 0xfd000002 (0, 0, 2)->(0, 0, 5)
Used time: 124.209(ms).
ASM>

3.3 准备dmasm的mal置文件dmasvrmal.ini

110 节点的 /home/dmdba/dmdsc/data/DSC01 下

[dmdba@dmdsc-1 DSC01]$ vim dmasvrmal.ini
[MAL_INST1]
MAL_INST_NAME= ASM1
MAL_HOST= 10.12.10.110
MAL_PORT= 4836
[MAL_INST2]
MAL_INST_NAME= ASM2
MAL_HOST= 10.12.10.111
MAL_PORT= 4836

111节点 与 110的内容完全一样。保存到/home/dmdba/dmdsc/data/DSC02

3.4 准备dmdcr.ini文件

保存到 110 的/home/dmdba/dmdsc/data/DSC01下

[dmdba@dmdsc-1 DSC01]$ vim dmdcr.ini
[dmdba@dmdsc-1 DSC01]$ cat dmdcr.ini 
DMDCR_PATH = /dev_DSC2/DCR 
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC01/dmasvrmal.ini 
DMDCR_SEQNO = 0
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_DB_RESTART_INTERVAL = 0 
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/bin/dmserver path=/home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.1.88

设置了 DMDCR_LINK_CHECK_IP,须为 110 节点的 DMSERVER 和 DMASMSVR 赋予 ping 权限。

[dmdba@dmdsc-1 ~]$ sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/bin/dmserver
[sudo] password for dmdba: 
[dmdba@dmdsc-1 ~]$ sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/bin/dmasmsvr
[dmdba@dmdsc-1 ~]$ 

3.5 为DSC02配置dmdcr.ini

保存到 111 的/home/dmdba/dmdsc/data/DSC02 下。

[dmdba@dmdsc-2 DSC02]$ vim dmdcr.ini
DMDCR_PATH = /dev_DSC2/DCR 
DMDCR_MAL_PATH = /home/dmdba/dmdsc/data/DSC02/dmasvrmal.ini 
DMDCR_SEQNO = 1 
DMDCR_ASM_RESTART_INTERVAL = 0 
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdsc/bin/bin/dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini 
DMDCR_DB_RESTART_INTERVAL = 0 
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdsc/bin/bin/dmserver path=/home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
DMDCR_LINK_CHECK_IP=192.168.1.88
[dmdba@dmdsc-2 DSC02]$ 

设置了 DMDCR_LINK_CHECK_IP,须为 110 节点的 DMSERVER 和 DMASMSVR 赋予ping 权限。

[dmdba@dmdsc-2 DSC02]$ sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/bin/dmserver
[sudo] password for dmdba: 
[dmdba@dmdsc-2 DSC02]$ sudo setcap cap_net_raw,cap_net_admin=eip /home/dmdba/dmdsc/bin/bin/dmasmsvr
[dmdba@dmdsc-2 DSC02]$ 

3.6 启动 DMCSS、DMASM 服务程序。

主节点 110 启动 DMCSS:

dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

另一节点 111 启动 DMCSS:

dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

主节点 110 启动 DMASMSVR:

dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini

另一节点 111 启动 DMASMSVR:

dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini

3.7 使用 DMASMTOOL 工具创建 ASM 磁盘组

在 110 上登录创建:

[dmdba@dmdsc-1 log]$ dmasmtool dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
DMASMTOOL V8
ASM>CREATE DISKGROUP DMDATA asmdisk '/dev_DSC2/DMDATA'
Used time: 69.671(ms).
ASM>CREATE DISKGROUP DMLOG asmdisk '/dev_DSC2/DMLOG'
Used time: 61.127(ms).
ASM>

3.8 在110机器上准备dminit.ini配置文件

保 存 到home/dmdba/dmdsc/data/DSC01 目录下

[dmdba@dmdsc-1 DSC01]$ vim dminit.ini 
DB_NAME= dameng
SYSTEM_PATH= +DMDATA/data
SYSTEM= +DMDATA/data/dameng/system.dbf
SYSTEM_SIZE= 128
ROLL= +DMDATA/data/dameng/roll.dbf
ROLL_SIZE= 128
MAIN= +DMDATA/data/dameng/main.dbf
MAIN_SIZE= 128
CTL_PATH= +DMDATA/data/dameng/dm.ctl
LOG_SIZE= 512
DCR_PATH= /dev_DSC2/DCR
DCR_SEQNO= 0
AUTO_OVERWRITE= 2
PAGE_SIZE = 16
EXTENT_SIZE = 16
SYSDBA_PWD=Dameng_123
SYSAUDITOR_PWD=Dameng_123
[DSC01]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC01/DSC01_conf
PORT_NUM = 5236
MAL_HOST= 10.12.10.110
MAL_PORT= 6536
LOG_PATH= +DMLOG/log/DSC01_log1.log
LOG_PATH= +DMLOG/log/DSC01_log2.log
[DSC02]
CONFIG_PATH= /home/dmdba/dmdsc/data/DSC02/DSC02_conf
PORT_NUM = 5236
MAL_HOST= 10.12.10.111
MAL_PORT= 6536
LOG_PATH= +DMLOG/log/DSC02_log1.log
LOG_PATH= +DMLOG/log/DSC02_log2.log

3.9 使用 DMINIT 初始化一个节点的数据库环境

选择一个节点,启动 DMINIT 初始化数据库,这里以 110 为例。DMINIT 执
行完成后,会在 config_path 目录(/home/dmdba/dmdsc/data/DSC01/DSC01_conf 和
/home/dmdba/dmdsc/data/DSC02/DSC02_conf)下生成配置文件dm.ini和dmmal.ini。

[dmdba@dmdsc-1 DSC01]$ dminit control=/home/dmdba/dmdsc/data/DSC01/dminit.ini
initdb V8
db version: 0x7000d
file dm.key not found, use default license!
License will expire on 2026-01-17
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
 log file path: +DMLOG/log/DSC01_log1.log
 log file path: +DMLOG/log/DSC01_log2.log
 log file path: +DMLOG/log/DSC02_log1.log
 log file path: +DMLOG/log/DSC02_log2.log
write to dir [+DMDATA/data/dameng].
create dm database success. 2025-04-13 19:50:18

3.10 使用拷贝的方式配置另外一个节点的数据库环境

将 110 上 初 始 化 库 时 产 生 的 DSC02 节 点 的 配 置 文 件 ( 整 个
/home/dmdba/dmdsc/data/DSC02 文 件 夹 ) 复 制 到 111 机 器 的
/home/dmdba/dmdsc/data/DSC02/目录下。之后就可以启动数据库服务器了。

[dmdba@dmdsc-1 DSC01]$ scp -r /home/dmdba/dmdsc/data/DSC02/*  dmdba@10.12.10.111:/home/dmdba/dmdsc/data/DSC02/
dmdba@10.12.10.111's password: 
dmmal.ini                                                     100%  204    88.0KB/s   00:00    
dm.ini                                                        100%   80KB  18.2MB/s   00:00    
sqllog.ini                                                    100%  714   318.9KB/s   00:00    
[dmdba@dmdsc-1 DSC01]$ 

3.11 启动数据库服务

分别启动两个节点的数据库服务
110 节点服务器启动:

[dmdba@dmdsc-1 ~]$ /home/dmdba/dmdsc/bin/bin/dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini

111 节点服务器启动:

[dmdba@dmdsc-2 ~]$ /home/dmdba/dmdsc/bin/bin/dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini

3.12 配置并启动 DMCSSM 监视器。

在/home/dmdba/dmdsc/data/路径下配置 DMCSSM.INI

[dmdba@dmdsc-1 data]$ vim dmcssm.ini
#和 DMDCR_CFG.INI 中的 DCR_OGUID 保持一致
CSSM_OGUID = 1071107589
#配置所有 CSS 的连接信息,
#与 DMDCR_CFG.INI 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 10.12.10.110:5436
CSSM_CSS_IP = 10.12.10.111:5436
#监视器日志文件存放路径,没有的话需要创建
CSSM_LOG_PATH = /home/dmdba/dmdsc/data/cssm_log
#每个日志文件最大 32M
CSSM_LOG_FILE_SIZE = 32
#不限定日志文件总占用空间
CSSM_LOG_SPACE_LIMIT = 0

创建 DMCSSM 的日志存放路径。

[dmdba@dmdsc-1 data]$ mkdir /home/dmdba/dmdsc/data/cssm_log

启动 DMCSSM 集群监视器。

[dmdba@dmdsc-1 cssm_log]$ dmcssm ini_path=/home/dmdba/dmdsc/data/dmcssm.ini
[monitor]          [2025-04-14 00:00:55:054] CSS MONITOR V8
[monitor]          [2025-04-14 00:00:55:478] CSS MONITOR SYSTEM IS READY
[monitor]          [2025-04-14 00:00:55:480] Wait CSS Control Node choosed...
[monitor]          [2025-04-14 00:00:56:501] Wait CSS Control Node choosed succeed.
help
DMCSSM使用说明:
SHOW命令中可以通过指定group_name获取指定组的信息,如果没有指定,则显示所有组的信息

1.help                                            --显示帮助
2.show [group_name]                               --显示指定的组信息
3.show config                                     --显示配置文件信息
4.show monitor                                    --显示当前连接的监视器信息
5.set group_name auto restart on                  --打开指定组的自动拉起功能(只修改dmcss内存值)
6.set group_name auto restart off                 --关闭指定组的自动拉起功能(只修改dmcss内存值)
7.open force group_name                           --强制OPEN指定的ASM或DB组
8.ep startup group_name                           --启动指定的ASM或DB组
9.ep stop group_name                              --停止指定的ASM或DB组
10.ep halt group_name.ep_name                     --强制退出指定组的指定节点
11.extend node                                    --扩展集群节点
12.ep crash group_name.ep_name                    --设定指定节点故障
13.check crash over group_name                    --检查指定组故障处理是否结束
14.exit                                           --退出监视器


show

monitor current time:2025-04-14 00:01:07, n_group:3
======== group[name = GRP_CSS, seq = 0, type = CSS, Control Node = 0] =================

[CSS1] auto check = TRUE, global info:
[ASM1] auto restart = FALSE
[DSC1] auto restart = FALSE
[CSS2] auto check = TRUE, global info:
[ASM2] auto restart = FALSE
[DSC2] auto restart = FALSE

ep:     css_time               inst_name seqno port   mode         inst_status  vtd_status is_ok  active guid          pid       ts          
        2025-04-14 00:01:06    CSS1      0     5436   Control Node OPEN         WORKING    OK     TRUE   2680229       5756      2683985     
        2025-04-14 00:01:06    CSS2      1     5436   Normal Node  OPEN         WORKING    OK     TRUE   2680956       4774      2684708     

====== group[name = GRP_ASM, seq = 1, type = ASM, Control Node = 0] ======================

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:     css_time               inst_name seqno port   mode         inst_status  vtd_status is_ok  active guid          pid       ts          
        2025-04-14 00:01:06    ASM1      0     5336   Control Node OPEN         WORKING    OK     TRUE   2691840       5805      2695569     
        2025-04-14 00:01:06    ASM2      1     5336   Normal Node  OPEN         WORKING    OK     TRUE   2693779       4831      2697499     

=========== group[name = GRP_DSC, seq = 2, type = DB, Control Node = 0] =========

n_ok_ep = 2
ok_ep_arr(index, seqno):
(0, 0)
(1, 1)

sta = OPEN, sub_sta = STARTUP
break ep = NULL
recover ep = NULL

crash process over flag is TRUE
ep:     css_time               inst_name seqno port   mode         inst_status  vtd_status is_ok  active guid          pid       ts          
        2025-04-14 00:01:06    DSC1      0     5236   Control Node OPEN         WORKING    OK     TRUE   3689355       6786      3690948     
        2025-04-14 00:01:06    DSC2      1     5236   Normal Node  OPEN         WORKING    OK     TRUE   3729682       5422      3731184     

=================================================================

3.13 两节点分别disql连接查看节点状态

110节点查看实例信息

[dmdba@dmdsc-1 log]$ disql sysdba/Dameng_123
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 22.927(ms)
disql V8
SQL> select * from gv$instance;

行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------------------- ------- ------ ----------- ----------- ------------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
1          DSC1 DSC1          1               dmdsc-1   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:34:19 OPEN    NORMAL 0           0           Control node
           03134284336-20250117-257733-20132 Jan 22 2025 09:13:48


行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------------------- ------- ------ ----------- ----------- ------------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
2          DSC2 DSC2          2               dmdsc-2   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:35:51 OPEN    NORMAL 0           1           Normal node
           03134284336-20250117-257733-20132 Jan 22 2025 09:17:02


已用时间: 6.173(毫秒). 执行号:66301.
SQL> select * from v$instance;

行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------------------- ------- ------ ----------- ----------- ------------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
1          DSC1 DSC1          1               dmdsc-1   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:34:19 OPEN    NORMAL 0           0           Control node
           03134284336-20250117-257733-20132 Jan 22 2025 09:13:48


已用时间: 4.324(毫秒). 执行号:66302.
SQL> 

111节点查看实例信息

[dmdba@dmdsc-2 DSC02_conf]$ disql sysdba/Dameng_123

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 97.270(ms)
disql V8
SQL> select * from gv$instance;

行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------------------- ------- ------ ----------- ----------- ------------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
1          DSC2 DSC2          2               dmdsc-2   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:35:51 OPEN    NORMAL 0           1           Normal node
           03134284336-20250117-257733-20132 Jan 22 2025 09:13:48


行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE    
           ------------------- ------- ------ ----------- ----------- ------------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
2          DSC1 DSC1          1               dmdsc-1   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:34:19 OPEN    NORMAL 0           0           Control node
           03134284336-20250117-257733-20132 Jan 22 2025 09:17:02


已用时间: 11.108(毫秒). 执行号:101.
SQL> select * from v$instance;  

行号     NAME INSTANCE_NAME INSTANCE_NUMBER HOST_NAME SVR_VERSION                DB_VERSION         
---------- ---- ------------- --------------- --------- -------------------------- -------------------
           START_TIME          STATUS$ MODE$  OGUID       DSC_SEQNO   DSC_ROLE   
           ------------------- ------- ------ ----------- ----------- -----------
           BUILD_VERSION                     BUILD_TIME          
           --------------------------------- --------------------
1          DSC2 DSC2          2               dmdsc-2   DM Database Server x64 V8  DB Version: 0x7000d
           2025-04-13 23:35:51 OPEN    NORMAL 0           1           Normal node
           03134284336-20250117-257733-20132 Jan 22 2025 09:13:48


已用时间: 3.657(毫秒). 执行号:102.
SQL> 

四、DMDSC集群管理

4.1手动启动集群

110 机器

dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini
dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini
dmcssm ini_path=/home/dmdba/dmdsc/data/dmcssm.ini

111 机器

dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
dmasmsvr dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini
dmserver dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini

4.2配置启动服务

110 机器

#注册CSS服务

./dm_service_installer.sh -t dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini -p CSS 

#注册ASM服务

./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdsc/data/DSC01/dmdcr.ini -y DmCSSServiceCSS.service -p ASM 

#注册DSC服务

./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdsc/data/DSC01/DSC01_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC01/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC 

#注册监视器服务

./dm_service_installer.sh -t dmcssm -cssm_ini /home/dmdba/dmdsc/data/dmcssm.ini -p Monitor

111 机器
#注册CSS服务

./dm_service_installer.sh -t dmcss dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini -p CSS 

#注册ASM服务

./dm_service_installer.sh -t dmasmsvr -dcr_ini /home/dmdba/dmdsc/data/DSC02/dmdcr.ini -y DmCSSServiceCSS.service -p ASM 

#注册DSC服务

./dm_service_installer.sh -t dmserver -dm_ini /home/dmdba/dmdsc/data/DSC02/DSC02_conf/dm.ini dcr_ini=/home/dmdba/dmdsc/data/DSC02/dmdcr.ini -y DmASMSvrServiceASM.service -p DSC 

删除自启 :

./dm_service_uninstaller.sh -n DmCSSServiceCSS 
./dm_service_uninstaller.sh -n DmASMSvrServiceASM 
./dm_service_uninstaller.sh -n DmServiceDSC
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服