注册
达梦第七课-DSC集群部署测试
技术分享/ 文章详情 /

达梦第七课-DSC集群部署测试

WXY是对称的 2025/06/20 260 0 0

一、 DMDSC集群介绍

1. DMDSC概述

DMDSC集群,全称为DM共享存储集群(DM Data Shared Cluster),简称DMDSC,DM数据共享集群允许多个数据库实例同时访问、操作同一个数据库,具有高可用、高性能、可负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某个实例发生故障不会影响整体数据库服务。
DMDSC集群是一个多实例、单数据库的系统,多个数据库实例可以访问、修改同一个数据库的数据。用户可以登录集群中的任意一个数据库实例,就可以获取这个数据库的完整服务。在DMDSC集群中,数据文件、控制文件只有一份,并且都保存在共享存储中,所有实例共同操作这些文件。每个节点都有一份自己的联机日志和归档日志,联机日志和归档日志也都在共享存储上。只有实例相关的配置文件是保留在实例服务器本机,用于启动实例。
DMDSC集群主要由数据库和数据库实例、共享存储、DMASM或DMASM镜像、本地存储、通信网络、集群控制软件DMCSS、集群监视器DMCSSM组成,DMDSC集群最多支持8个数据库实例节点。下图为两节点DMDSC集群系统的结构图:

2. 集群特性

  • 高可用性:只要集群中有一个活动节点,就能正常提供数据库服务。此外,当出现磁盘损坏或数据丢失时,既可以利用其他镜像副本继续提供数据库服务,又可以使用其他镜像副本进行数据恢复。
  • 高吞吐量:多个节点同时提供数据库服务,有效提升集群的整体事务处理能力。
  • 负载均衡:一方面,通过巧用服务名,用户的连接请求被平均分配到集群中的各个节点,确保连接负载平衡;另一方面,条带化技术可保证写入的数据均匀分布到磁盘组内的不同磁盘中,实现数据负载均衡。

3. 名词介绍

image.png

4. 配置文件介绍

image.png

二、 测试部署

本次部署两节点DSC,采用Vmware虚拟机创建共享磁盘的方式进行。

1. 环境规划

1.1 服务器信息

image.png

1.2 IP和端口规划

image.png

2. 虚拟机环境准备

虚拟机进行双机centos7部署,关闭防火墙,调整时间,调整系统内核参数、limit限制,创建dmdba用户等。

2.1 虚拟机磁盘准备

DSC1服务器一共创建四个磁盘,大小分别为1G(DCR),1G(VOTE),2G(RLOG),8G(DATA)。操作如下:
关闭虚拟机–>编辑虚拟机设置–>添加–>硬盘–>SCSI–>创建新的虚拟磁盘–>1G-立即分配-存储为单个文件–>选择存放位置以及改名–>完成。

DSC2服务器需要基于DSC1服务器创建的四个磁盘进行添加,操作如下:
关闭虚拟机–>编辑虚拟机设置–>添加–>硬盘–>SCSI–>使用现有的虚拟磁盘–>浏览选择磁盘–>完成。

完成后结果如下图:
image.png

2.2 虚拟机配置文件修改

找到虚拟机安装位置,编辑DSC1虚拟机的参数文件DSC1.vmx和DSC2虚拟机的参数文件DSC2.vmx:
添加以下内容。

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

注意scsi0.sharedBus ="virtual"参数,查看磁盘高级选项,查看scsi的编号进行调整,通常默认会识别为scsi0:2-5。

2.3 Udev绑定

2.3.1 查看磁盘

fdisk  -l 

image.png

2.3.2 查看磁盘的UUID

/usr/lib/udev/scsi_id -g -u /dev/sdb 

image.png

2.3.3 绑定磁盘

vi /etc/udev/rules.d/66-dmdevices.rules
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29f1fb601bd39e1008801375b84", SYMLINK+="ASMDISK/dmdcr",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2951f912cfa5a52048f7846be92", SYMLINK+="ASMDISK/dmvote",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c29293ba4bb7e368110283b32f6a", SYMLINK+="ASMDISK/dmredo",OWNER="dmdba", GROUP="dmdba",MODE="0660"
KERNEL=="sd*",ENV{DEVTYPE}=="disk",SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id --whitelisted --replace-whitespace --device=/dev/$name",RESULT=="36000c2963b11d8c08e0ead2aa246a532", SYMLINK+="ASMDISK/dmdata",OWNER="dmdba", GROUP="dmdba",MODE="0660"

2.3.4 生效

udevadm trigger --type=devices --action=change

2.3.5 查看

ls -l /dev/ASMDISK

image.png

2.4 数据库软件安装

2.4.1 安装数据库软件

./DMInstall.bin -I  <<EOF
1
n
y
21
1
/dmdata/dmdbms
y
EOF
su - root
sh  /dmdata/dmdbms/script/root/root_installer.sh

2.4.2 配置环境变量

echo " export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool"  >> .bash_profile 
source .bash_profile

3. 开始DMDSC部署

3.1 配置dmdcr_cfg.ini

mkdir  /dmdata/dmdbms/config
vim  /dmdata/dmdbms/config/dmdcr_cfg.ini
DCR_N_GRP                = 3  #集群环境有多少个GROUP,范围:1~16
  DCR_VTD_PATH             = /dev/ASMDISK/dmvote
  DCR_OGUID                = 45331

[GRP]  #新建一个GROUP
  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              = 192.168.20.51 #心跳地址
  DCR_EP_PORT              = 5336  #CSS端口
[GRP_CSS]
  DCR_EP_NAME              = CSS1
  DCR_EP_HOST              = 192.168.20.52 #心跳地址
  DCR_EP_PORT              = 5336

[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          = 10  #共享内存大小
  DCR_EP_HOST              = 192.168.20.51  #心跳地址
  DCR_EP_PORT              = 5436  #ASM端口
  DCR_EP_ASM_LOAD_PATH     = /dev/ASMDISK
[GRP_ASM]
  DCR_EP_NAME              = ASM1
  DCR_EP_SHM_KEY           = 93361
  DCR_EP_SHM_SIZE          = 10
  DCR_EP_HOST              = 192.168.20.52 #心跳地址
  DCR_EP_PORT              = 5436
  DCR_EP_ASM_LOAD_PATH     = /dev/ASMDISK

[GRP]
  DCR_GRP_TYPE             = DB
  DCR_GRP_NAME             = GRP_DB
  DCR_GRP_N_EP             = 2
  DCR_GRP_DSKCHK_CNT       = 60
[GRP_DB]
  DCR_EP_NAME              = DB0  #实例名,和dm.ini的INSTANCE_NAME一致
  DCR_EP_SEQNO             = 0  #组内序号,不能重复
  DCR_EP_PORT              = 5236  #实例端口,和dm.ini的PORT_NUM一致
  DCR_CHECK_PORT           = 5536  #DCR检查端口
[GRP_DB]
  DCR_EP_NAME              = DB1
  DCR_EP_SEQNO             = 1
  DCR_EP_PORT              = 5236
  DCR_CHECK_PORT           = 5536

3.2 初始化磁盘

3.2.1 在任意节点配置执行

vim  /dmdata/dmdbms/config/asminit.txt
#asm script file
create dcrdisk '/dev/ASMDISK/dmdcr' 'DMDCR'
create votedisk '/dev/ASMDISK/dmvote' 'DMVOTE'
create asmdisk '/dev/ASMDISK/dmredo' 'DMREDO'
create asmdisk '/dev/ASMDISK/dmdata' 'DMDATA'
init dcrdisk '/dev/ASMDISK/dmdcr' from '/dmdata/dmdbms/config/dmdcr_cfg.ini' identified by 'Dameng123'
init votedisk '/dev/ASMDISK/dmvote' from '/dmdata/dmdbms/config/dmdcr_cfg.ini'

3.2.2 执行初始化

需要注意默认密码要求

/dmdata/dmdbms/bin/dmasmcmd SCRIPT_FILE=/dmdata/dmdbms/config/asminit.txt

image.png

3.3 配置dmasvrmal.ini

两台服务器都配置dmasvrmal.ini

vim /dmdata/dmdbms/config/dmasvrmal.ini
[MAL_INST1]
  MAL_INST_NAME            = ASM0
  MAL_HOST                 = 192.168.20.51 #心跳地址
  MAL_PORT                 = 5636  
[MAL_INST2]
  MAL_INST_NAME            = ASM1
  MAL_HOST                 = 192.168.20.52 #心跳地址
  MAL_PORT                 = 5636

3.4 配置dmdcr.ini

3.4.1 DSC1使用dmdba用户配置dmdcr.ini

vim /dmdata/dmdbms/config/dmdcr.ini
DMDCR_PATH                 = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH             = /dmdata/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO                = 0
DMDCR_ASM_TRACE_LEVEL      = 2
DMDCR_AUTO_OPEN_CHECK      = 90
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD      = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
#DMDCR_DB_RESTART_INTERVAL  = 60
#DMDCR_DB_STARTUP_CMD       = /dmdata/dmdbms/bin/DmServiceDMS start

3.4.2 DSC2使用dmdba用户配置dmdcr.ini(注意DCR_SEQNO)

vim /dmdata/dmdbms/config/dmdcr.ini
DMDCR_PATH                 = /dev/ASMDISK/dmdcr
DMDCR_MAL_PATH             = /dmdata/dmdbms/config/dmasvrmal.ini
DMDCR_SEQNO                = 1
DMDCR_ASM_TRACE_LEVEL      = 2
DMDCR_AUTO_OPEN_CHECK      = 90
#DMDCR_ASM_RESTART_INTERVAL = 30
#DMDCR_ASM_STARTUP_CMD      = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
#DMDCR_DB_RESTART_INTERVAL  = 60
#DMDCR_DB_STARTUP_CMD       = /dmdata/dmdbms/bin/DmServiceDMS start

3.4.3 两台服务器都使用root用户注册CSS和ASM服务

su - root 
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmcss -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -p CSS
/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmCSSServiceCSS.service -p ASM

3.4.4 两台服务器分别顺序启动CSS、ASM服务

DSC1服务器:

/dmdata/dmdbms/bin/DmCSSServiceCSS start

DSC2服务器:

/dmdata/dmdbms/bin/DmCSSServiceCSS start

DSC1服务器:

/dmdata/dmdbms/bin/DmASMSvrServiceASM start

DSC2服务器:

/dmdata/dmdbms/bin/DmASMSvrServiceASM start

3.5 创建DMASM磁盘组

任一机器,dmdba用户执行

/dmdata/dmdbms/bin/dmasmtool  DCR_INI=/dmdata/dmdbms/config/dmdcr.ini
create diskgroup 'DM_REDO' asmdisk '/dev/ASMDISK/dmredo'
create diskgroup 'DM_DATA' asmdisk '/dev/ASMDISK/dmdata'

image.png

3.6 初始化数据库

3.6.1 DSC1服务器配置dminit.ini用于数据库初始化

[dmdba@dsc1 ~]$ vi /dmdata/dmdbms/config/dminit.ini
	#注意REDO文件大小和数量
[dmdba@dsc1 ~]$ cat /dmdata/dmdbms/config/dminit.ini
  db_name                  = DSC
  system_path              = +DM_DATA/DATA
  main                     = +DM_DATA/DATA/DSC/main.dbf
  main_size                = 128
  roll                     = +DM_DATA/DATA/DSC/roll.dbf
  roll_size                = 128
  system                   = +DM_DATA/DATA/DSC/system.dbf
  system_size              = 128
  ctl_path                 = +DM_DATA/DATA/DSC/dm.ctl
  ctl_size                 = 8
  log_size                 = 256
  dcr_path                 = /dev/ASMDISK/dmdcr
  dcr_seqno                = 0
  auto_overwrite           = 1
  PAGE_SIZE                = 32
  EXTENT_SIZE                  = 32
  CASE_SENSITIVE           = Y
  CHARSET                  = 0
  BLANK_PAD_MODE           = 1
  SYSDBA_PWD               = Dameng123
  SYSAUDITOR_PWD            = Dameng123
[DB0]
  config_path              = /dmdata/dmdbms/config/db0_config
  port_num                 = 5236
  mal_host                 = 192.168.20.51 #心跳地址
  mal_port                 = 5736
  log_path                 = +DM_REDO/log/db0_log01.log
  log_path                 = +DM_REDO/log/db0_log02.log
  log_path                 = +DM_REDO/log/db0_log03.log
[DB1]
  config_path              = /dmdata/dmdbms/config/db1_config
  port_num                 = 5236
  mal_host                 = 192.168.20.52 #心跳地址
  mal_port                 = 5736
  log_path                 = +DM_REDO/log/db1_log01.log
  log_path                 = +DM_REDO/log/db1_log02.log
  log_path                 = +DM_REDO/log/db1_log03.log

3.6.2 DSC1服务器初始化数据库

[dmdba@dsc1 ~]$ /dmdata/dmdbms/bin/dminit control=/dmdata/dmdbms/config/dminit.ini

image.png

3.6.3 从DSC1服务器将配置文件传输到DSC2

scp -r /dmdata/dmdbms/config/db1_config/ @192.168.20.52:/dmdata/dmdbms/config

3.7 配置dmcssm.ini

两台服务器均配置此参数文件

vim /dmdata/dmdbms/config/dmcssm.ini
CSSM_OGUID                 = 45331
CSSM_CSS_IP                = 192.168.20.51:5336
CSSM_CSS_IP                = 192.168.20.52:5336
CSSM_LOG_PATH              = /dmdata/dmdbms/log
CSSM_LOG_FILE_SIZE         = 256
CSSM_LOG_SPACE_LIMIT       = 2048

3.8 开启归档

3.8.1 配置DSC1归档

修改DSC1数据库的配置文件

vim /dmdata/dmdbms/config/db0_config/dm.ini
	#修改ARCH_INI的值为1(默认值为0)

配置DSC1的归档

vim /dmdata/dmdbms/config/db0_config/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DM_DATA/DB0/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DB1
ARCH_INCOMING_PATH = +DM_DATA/DB1/arch
ARCH_FILE_SIZE = 1024

3.8.2 配置DSC2归档

修改DSC2数据库的配置文件

vim /dmdata/dmdbms/config/db1_config/dm.ini
	#修改ARCH_INI的值为1(默认值为0)

配置DSC2的归档(注意路径的区别)

vim /dmdata/dmdbms/config/db1_config/dmarch.ini
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DM_DATA/DB1/arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 102400
[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DB0
ARCH_INCOMING_PATH = +DM_DATA/DB0/arch
ARCH_FILE_SIZE = 1024

3.9 注册DMSERVER服务

DSC1基于DMASMSvrServiceASM.service注册DMSERVER服务

/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdbms/config/db0_config/dm.ini -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS

DSC1基于DMASMSvrServiceASM.service注册DMSERVER服务

/dmdata/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /dmdata/dmdbms/config/db1_config/dm.ini -dcr_ini /dmdata/dmdbms/config/dmdcr.ini -y DmASMSvrServiceASM.service -p DMS

3.10 调整DCR配置,设置自动启动服务

配置dmdcr.ini

vim /dmdata/dmdbms/config/dmdcr.ini     #解开后四行注释
DMDCR_ASM_RESTART_INTERVAL = 30
DMDCR_ASM_STARTUP_CMD      = /dmdata/dmdbms/bin/DmASMSvrServiceASM start
DMDCR_DB_RESTART_INTERVAL  = 60
DMDCR_DB_STARTUP_CMD       = /dmdata/dmdbms/bin/DmServiceDMS start

重启服务器测试自启动情况
image.png

3.11 通过监视器查看服务状态

/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
show 

image.png

三、 集群启停操作

1. 集群关闭

可以通过CSSM来进行集群的关闭
停止顺序:关闭DMSERVER集群组→关闭ASM集群组→关闭CSS集群组组

1.1 登录DMCSSM服务

/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
Help

image.png

1.2 通过show查看group_name

Show

image.png

1.3 关闭DMSERVER服务

Ep stop grp_db

image.png

1.4 关闭ASM服务

Ep stop grp_ASM

image.png

1.5 关闭CSS服务

DmCSSServiceCSS stop

image.png
image.png
完成数据库集群关闭

2. 集群启动

2.1 启动CSS服务

DmCSSServiceCSS start

2.2 启动ASM服务

DmASMSvrServiceASM start
#在解除dmdcr.ini的注释之后,基于相应配置,超过指定时间会自动拉起相应的服务。

2.3 启动DMSERVER服务

DmServiceDMS start
#在解除dmdcr.ini的注释之后,基于相应配置,超过指定时间会自动拉起相应的服务。

下图中ASM服务状态为自动拉起
image.png

查看集群服务状态

/dmdata/dmdbms/bin/dmcssm ini_path=/dmdata/dmdbms/config/dmcssm.ini
Show

image.png
启动完成

日志查看
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服