达梦数据库DMDSC搭建

前言

本文先简单介绍了DMDSC,然后描述了如何搭建达梦数据库DMDSC

目录

前言

DM DSC 名词解析

DMCSS 

控制节点(Control Node)

普通节点(Normal Node)

DMCSS 工作原理

DMASM

dmasvrmal

搭建步骤

准备

共享盘初始化

安装DM数据库软件

集群搭建

配置CSS和ASM,初始化ASM

初始化DB

启动

测试

关闭集群


DM DSC 名词解析

        DM DSC共享存储数据库集群是一个多实例、单数据库的系统通过多实例访问共享存储的方式实现高可用、高性能、负载均衡等特性。下图为DSC架构图(图片来源于达梦官网)

达梦数据库DMDSC搭建_第1张图片

 下面简单说明各个组件的作用

DMCSS 

        DMCSS 可检测故障并自动将故障节点踢出集群。每个节点都需要配置一个 DMCSS 服务,所有DMCSS 构成一个集群。

控制节点(Control Node)

        是DMCSS中负责监控、管理整个 DMASM 集群和 DMDSC 集群的节点

普通节点(Normal Node)

        DMCSS集群控制节点以外的节点都为普通节点。DMCSS 普通节点不参与 DMASM 集群和 DMDSC 集群管理,当 DMCSS 控制节点故障时,会从活动的普通节点中重新选取一个 DMCSS 控制节点。

DMCSS 工作原理

        在 VOTE 磁盘(非镜像环境下)或 DCRV 磁盘(镜像环境下)中,为每个被监控对象(DMASMSVR、DMSERVER、DMCSS)分配一片独立的存储区域被监控对象定时向 VOTE 或 DCRV 磁盘写入信息(包括时间戳、状态、命令、以及命令执行结果等);DMCSS 控制节点定时从 VOTE 或 DCRV 磁盘读取信息,检查被监控对象的状态变化,启动相应的处理流程;被监控对象只会被动的接收 DMCSS 控制节点命令,执行并响应。

DMASM

        DMASM 是达梦设计的一款分布式文件系统,用于管理块设备的磁盘和文件

ASM 磁盘

        ASM磁盘是指经过 DMASMCMD 工具格式化,可以被 DMASMSVR 识别的物理磁盘。

磁盘组

        磁盘组由一个或多个 ASM 磁盘组成,是存储 ASM 文件的载体

DCR 磁盘(DCR DISK)

        DCR 文件记录了存储、维护集群配置的详细信息。整个集群环境共享 DCR 磁盘信息,包括集群(DMDSC、DMASM、DMCSS)资源、实例名、监听端口、集群中故障节点信息等。DCR磁盘专门用来存放DCR 文件。

表决磁盘(VOTE DISK)

     表决磁盘专门用于存储 VTD 文件。主要有两个功能:

  1. 各个实例定时向vote 盘写入状态信息。DM CSS通过这些状态信息判断各个实例的状态
  2. DMCSS 通过 VOTE DISK 传递控制命令,通知节点执行相应命令

dmasvrmal

        MAL服务,检测心跳用的

搭建步骤

准备

1.准备至少2台虚拟机。(下文用dameng01和dameng02表示)

2.每台虚拟机要求挂载5个共享盘(注: 以下为博主的共享盘信息,设置的比较小,可根据实际情况调整)

共享盘用于 大小 备注
VOTE 磁盘 1G
DCR 盘 1G
Redo 日志盘 2G 必须大于1G
数据盘 10G
归档日志 2G

vmware创建共享盘操作可参考:

 Oracle 21C RAC 三节点集群保姆级安装教程(附VMware共享磁盘配置方法) - 知乎 (zhihu.com)  《三、创建共享磁盘》章节

共享盘初始化

以下命令,在所有DSC机器执行

0.检查共享盘是否已经挂载好了

达梦数据库DMDSC搭建_第2张图片

1.建用户

groupadd dinstall -g 2001
useradd -g dinstall dmdba -u 1001
passwd dmdba

2.准备脚本,生成命令,通过uuid 绑定共享盘

 以下脚本用于生成绑定规则

curr=$(cd "$(dirname "$0")";pwd)
rm -f $curr/88-dm-asmdevices.rules
for i in a b c d e;
	do
		echo "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.rules
	done

3.执行命令

chmod +x uuid.sh

./uuid.sh

脚本生成的规则中,软链后缀不是太好辨别用途,可适当修改,如数据盘改成 dm/asm-data01

4.把文件拷贝到udev目录

        cp 88-dm-asmdevices.rules /etc/udev/rules.d/88-dm-asmdevices.rules

5.重启操作系统

6.检查

blockdev --getsize64 /dev/dm/asm-diskb
blockdev --getsize64 /dev/dm/asm-diskc
blockdev --getsize64 /dev/dm/asm-diskd
blockdev --getsize64 /dev/dm/asm-diske
blockdev --getsize64 /dev/dm/asm-diskf


 

安装DM数据库软件

略。

集群搭建

按以下描述规划共享存储

/dev/dm/asm-diskb --> 数据盘
/dev/dm/asm-diskc -->归档日志
/dev/dm/asm-diskd -->vote
/dev/dm/asm-diske -->dcr
/dev/dm/asm-diskf -->redo

配置CSS和ASM,初始化ASM

1.配置 dmdcr_cfg.ini(所有机器执行)

博主的dbms 安装在/data01/dmdbms/。注意按实际情况修改路径

mkdir /data01//dmdbms/dsc_config
cat > /data01//dmdbms/dsc_config/dmdcr_cfg.ini << EOF
DCR_N_GRP                 = 3     ##集群环境有多少个 GROUP,范围:1~16
DCR_VTD_PATH               = /dev/dm/asm-diskd   ##规划为 vote 的磁盘
DCR_OGUID       = 210715   ## 消息标识,一个组里面只有一个。

[GRP]  #新建一个 GROUP
  DCR_GRP_TYPE             = CSS  ##组类型(CSS/ASM/DB)
  DCR_GRP_NAME           = GRP_CSS  ##组名
  DCR_GRP_N_EP            = 2  ##组内节点个数
  DCR_GRP_DSKCHK_CNT     = 65  ##磁盘心跳容错时间,单位:秒
[GRP_CSS]
  DCR_EP_NAME             = CSS0   ##CSS 节点名
  DCR_EP_HOST              = 192.168.25.121   ##心跳地址
  DCR_EP_PORT              = 11286   ##CSS 端口
[GRP_CSS]
  DCR_EP_NAME            = CSS1
  DCR_EP_HOST             = 192.168.25.122
  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  ##ASM 节点名,和 dmasvrmal 的 MAL_INST_NAME 一致
  DCR_EP_SHM_KEY         = 42424  ##共享内存标识
  DCR_EP_SHM_SIZE        = 1024  ##共享内存大小
  DCR_EP_HOST               = 192.168.25.121  ##心跳地址
  DCR_EP_PORT               = 11276  ##ASM 端口
  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               = 192.168.25.122
  DCR_EP_PORT               = 11277
  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  ##实例名,和 dm.ini 的 INSTANCE_NAME 一致
  DCR_EP_SEQNO           = 0  ##组内序号,不能重复
  DCR_EP_PORT              = 5237  ##实例端口,和 dm.ini 的 PORT_NUM 一致
  DCR_CHECK_PORT       = 11256   ##DCR 检查端口
[GRP_DSC]
  DCR_EP_NAME             = DSC1
  DCR_EP_SEQNO           = 1
  DCR_EP_PORT              = 5237
  DCR_CHECK_PORT       = 11257
EOF

2.初始化盘(只在任意一台机上执行)

/dm/dmdbms/bin/dmasmcmd

create dcrdisk '/dev/dm/asm-diske' 'dcr'
create votedisk '/dev/dm/asm-diskd' 'vote'
init dcrdisk '/dev/dm/asm-diske' from '/data01/dmdbms/dsc_config/dmdcr_cfg.ini' identified by 'hust4400'
init votedisk '/dev/dm/asm-diskd' from '/data01/dmdbms/dsc_config/dmdcr_cfg.ini'
create asmdisk '/dev/dm/asm-diskb' 'DATA0'
create asmdisk '/dev/dm/asm-diskf' 'LOG0'
create asmdisk '/dev/dm/asm-diskc' 'ARCH0'

3.配置dmasvrmal.ini(所有机器执行)

cat > /data01/dmdbms/dsc_config/dmasvrmal.ini << EOF
[MAL_INST0]
MAL_INST_NAME            = ASM0
MAL_HOST                  = 192.168.25.121  #心跳地址
MAL_PORT                  = 11266  #MAL 监听端口
[MAL_INST1]
MAL_INST_NAME            = ASM1
MAL_HOST                  = 192.168.25.122
MAL_PORT                  = 11266
EOF

4.拷贝配置(所有机器执行)

mkdir -p /data01/dmdbms/dsc_config/DSC0/
mkdir -p /data01/dmdbms/dsc_config/DSC1/
cp /data01/dmdbms/dsc_config/dmasvrmal.ini /data01/dmdbms/dsc_config/DSC0/
cp /data01/dmdbms/dsc_config/dmasvrmal.ini /data01/dmdbms/dsc_config/DSC1/


ls -ltrh /data01/dmdbms/dsc_config/DSC0/
ls -ltrh /data01/dmdbms/dsc_config/DSC1/

5.配置 dmdcr.ini 文件(dameng01执行)

cat > /data01/dmdbms/dsc_config/dmdcr.ini << EOF
DMDCR_PATH                   = /dev/dm/asm-diske
DMDCR_MAL_PATH           = /data01/dmdbms/dsc_config/DSC0/dmasvrmal.ini
DMDCR_SEQNO                  = 0
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2


##DMDCR_ASM_RESTART_INTERVAL   = 60  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD     = /data01/dmdbms/dsc_config/DmAsmService_DSC0 start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD      = /data01/dmdbms/dsc_config/DmService_DSC0 start
EOF

cp /data01/dmdbms/dsc_config/dmdcr.ini /data01/dmdbms/dsc_config/DSC0/

5.配置 dmdcr.ini 文件(dameng02执行)

cat > /data01/dmdbms/dsc_config/dmdcr.ini << EOF
DMDCR_PATH                   = /dev/dm/asm-diske
DMDCR_MAL_PATH           = /data01/dmdbms/dsc_config/DSC1/dmasvrmal.ini
DMDCR_SEQNO                  = 1
DMDCR_AUTO_OPEN_CHECK        = 111
DMDCR_ASM_TRACE_LEVEL        = 2


##DMDCR_ASM_RESTART_INTERVAL   = 60  #CSS 认定 ASM 故障重启的时间
##DMDCR_ASM_STARTUP_CMD     = /data01/dmdbms/dsc_config/DmAsmService_DSC1 start
##DMDCR_DB_RESTART_INTERVAL    = 60   ##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
##DMDCR_DB_STARTUP_CMD      = /data01/dmdbms/dsc_config/DmService_DSC1 start
EOF



cp /data01/dmdbms/dsc_config/dmdcr.ini /data01/dmdbms/dsc_config/DSC1/

6.启动dmcss 和DMASM 服务(dameng01执行,前台启动的,注意开多个窗口)

/data01/dmdbms/bin/dmcss DCR_INI=/data01/dmdbms/dsc_config/DSC0/dmdcr.ini

/data01/dmdbms/bin/dmasmsvr DCR_INI=/data01/dmdbms/dsc_config/DSC0/dmdcr.ini

7.启动dmcss 和DMASM 服务(dameng02执行,前台启动的,注意开多个窗口)

/data01/dmdbms/bin/dmcss DCR_INI=/data01/dmdbms/dsc_config/DSC1/dmdcr.ini

/data01/dmdbms/bin/dmasmsvr DCR_INI=/data01/dmdbms/dsc_config/DSC1/dmdcr.ini

8.创建 DMASM 磁盘组(dameng01执行)

/data01/dmdbms/bin/dmasmtool DCR_INI=/data01/dmdbms/dsc_config/DSC0/dmdcr.ini
create diskgroup 'DMLOG' asmdisk '/dev/dm/asm-diskf'
create diskgroup 'DMDATA' asmdisk '/dev/dm/asm-diskb'
create diskgroup 'DMARCH' asmdisk '/dev/dm/asm-diskc'

初始化DB

1.准备配置文件(dameng01执行)

cat > /data01/dmdbms/dsc_config/dminit.ini << EOF
DB_NAME                  = DSC
SYSDBA_PWD               = SYSDBA_PWD
SYSTEM_PATH              = +DMDATA/data
SYSTEM                   = +DMDATA/data/SYSTEM.dbf
SYSTEM_SIZE              = 128
ROLL                     = +DMDATA/data/ROLL.dbf
ROLL_SIZE                = 10000
MAIN                     = +DMDATA/data/MAIN.dbf
MAIN_SIZE                = 128
CTL_PATH                 = +DMDATA/data/dm.ctl
CTL_SIZE                 = 8
LOG_SIZE                 = 128
DCR_PATH                 = /dev/dm/asm-diske
DCR_SEQNO                = 0
AUTO_OVERWRITE           = 1
PAGE_SIZE                = 32
EXTENT_SIZE              = 16
BLANK_PAD_MODE           = 1
[DSC0]
CONFIG_PATH              = /data01/dmdbms/dsc_config/DSC0
PORT_NUM                 = 5237
MAL_HOST                 = 192.168.25.121
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC0_LOG01.log
LOG_PATH                 = +DMLOG/DSC0_LOG02.log
[DSC1]
CONFIG_PATH              = /data01/dmdbms/dsc_config/DSC1
PORT_NUM                 = 5237
MAL_HOST                 = 192.168.25.122
MAL_PORT                 = 11246
LOG_PATH                 = +DMLOG/DSC1_LOG01.log
LOG_PATH                 = +DMLOG/DSC1_LOG02.log
EOF

2.初始化,并拷贝配置文件到dameng02(dameng01执行)

/data01/dmdbms/bin/dminit control=/data01/dmdbms/dsc_config/dminit.ini
#拷贝到dameng02
scp -r DSC1 dmdba@dameng02:/data01/dmdbms/dsc_config/

3.dameng01开启归档

vim /data01/dmdbms/dsc_config/DSC0/dm.ini 
ARCH_INI = 1
vi /data01/dmdbms/dsc_config/DSC0/dmarch.ini
ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 512
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 512

4.dameng02开启归档

vim /data01/dmdbms/dsc_config/DSC1/dm.ini 
ARCH_INI = 1
vi /data01/dmdbms/dsc_config/DSC1/dmarch.ini

ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMARCH/ARCH/DSC1/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 512
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMARCH/ARCH/DSC0/arch
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 512

5.让CSS自动拉起DSC和

vim /data01/dmdbms/dsc_config/dmdcr.ini

DMDCR_ASM_RESTART_INTERVAL=60 #CSS 认定 ASM 故障重启的时间
DMDCR_ASM_STARTUP_CMD     = /data01/dmdbms/bin/DmASMSvrServiceASM start
##CSS 认定 DSC 故障重启的时间,设置为 0 不自动拉起
DMDCR_DB_RESTART_INTERVAL    = 60
DMDCR_DB_STARTUP_CMD      = /data01/dmdbms/bin/DmServiceDSC start

6.dameng01注册服务

/data01/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini -p CSS

/data01/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

/data01/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data01/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini -y DmASMSvrServiceASM.service  -p DSC

7.dameng02注册服务

/data01/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini -p CSS

/data01/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

/data01/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /data01/dmdbms/dsc_config/DSC0/dm.ini -dcr_ini /data01/dmdbms/dsc_config/dmdcr.ini \
-y DmASMSvrServiceASM.service  -p DSC

8.配置DMCSSM监听器(所有机器)

[dmdba@~]# vi /data01/dmdbms/bin/dmcssm.ini

CSSM_OGUID                 = 210715
CSSM_CSS_IP                = 192.168.25.121:11286
CSSM_CSS_IP                = 192.168.25.122:11286
CSSM_LOG_PATH              = ../log
CSSM_LOG_FILE_SIZE         = 128
CSSM_LOG_SPACE_LIMIT       = 512

9.生成服务启动命令

/data01/dmdbms/script/root/dm_service_installer.sh -t dmcssm -cssm_ini /data01/dmdbms/bin/dmcssm.ini -p Monitor

cp /data01/dmdbms/bin/DmCSSMonitorServiceMonitor /data01/dmdbms/bin/DmCSSMonitorServiceMonitor_bak

/data01/dmdbms/script/root/dm_service_uninstaller.sh -n DmCSSMonitorServiceMonitor

cp /data01/dmdbms/bin/DmCSSMonitorServiceMonitor /data01/dmdbms/bin/DmCSSMonitorServiceMonitor

启动

1.启动DMCSS监控控制台

--前台启动:

[dmdba@~]# /data01/dmdbms/bin/dmcssm INI_PATH=/data01/dmdbms/bin/dmcssm.ini

--后台启动:

[dmdba@~]# /data01/dmdbms/bin/DmCSSMonitorServiceMonitor start

2.启动:所有机器 CSS

/data01/dmdbms/bin/DmCSSServiceCSS start
##说明:CSS 启动后自动拉起 ASM 和 DMSERVER。

3.启动:ASM

/data01/dmdbms/bin/DmASMSvrServiceASM start

4.启动DSC

/data01/dmdbms/bin/DmServiceDSC start

测试

disql SYSDBA/SYSDBA_PWD@localhost:5237
create schema testdb ;
CREATE TABLE testdb.test (
id INT primary key,
name VARCHAR(50),
email VARCHAR(100)
);

insert into  testdb.test  values(1,’test1’,’test1’)

dameng01和dameng02 分别执行,确认查出来的东西是一样的

select * from testdb.test

关闭集群

/data01/dmdbms/bin/DmCSSMonitorServiceMonitor stop

/data01/dmdbms/bin/DmServiceDSC stop

/data01/dmdbms/bin/DmASMSvrServiceASM stop

/data01/dmdbms/bin/DmCSSServiceCSS stop 

参考材料

Oracle 21C RAC 三节点集群保姆级安装教程(附VMware共享磁盘配置方法) - 知乎 (zhihu.com)

共享存储集群安装部署 | 达梦技术文档 (dameng.com)

你可能感兴趣的:(数据库)