注册
达梦数据库数据共享集群DSC -- 添加节点
专栏/培训园地/ 文章详情 /

达梦数据库数据共享集群DSC -- 添加节点

小小人⑤ 2025/04/15 113 0 0
摘要

概述

本文讲述的环境均是在本地的VMware虚拟机环境,仅供参考。

DSC集群支持动态扩展,但每次扩展只能在原有基础上增加一个节点。同时需确保集群所有节点都为OK状态,所有的数据库实例都处于OPEN状态,并且可以正常访问。

下面介绍下DSC两节点集群扩展为DSC集群三节点,其中DSC两节点环境已经准备好,将详细的讲述如何添加另一个节点的操作流程和实施步骤。

环境说明

DSC集群规划

达梦数据库数据共享集群DSC -- 两节点搭建
新增节点三的相关内容指标

指标项 节点三
主机名 node3
CSS节点名 CSS3
ASM节点名 ASM3
实例名 DSC3
操作系统 CentOS Linux 7
数据库版本 DM8
节点IP 192.168.2.53
心跳IP 10.10.10.3
数据库安装路径 /opt/dmdbms
配置文件路径 /dmdata/config
磁盘链接路径 /dev_dmdsc
本地归档路径 /dmarch
实例端口 5236
CSS端口 11288
ASM端口 11278
DCR检查端口 11268
ASM的MAL端口 11258
数据库的MAL端口 11248

环境准备

准备一台虚拟机作为节点三,配置和节点一、节点二一致。过程略
虚拟机添加参数 disk.EnableUUID = "TRUE" :解决scsi_id不显示虚拟磁盘的uuid的问题

添加共享磁盘
将配置信息写入 dsc3.vmx

disk.locking = "FALSE"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.maxUnsyncedWrites = "0"

scsi1.present = "TRUE"
scsi1.virtualDev = "lsilogic"
scsil.sharedBus = "VIRTUAL"
scsi1:0.present = "TRUE"
scsi1:0.mode = "independent-persistent"
scsi1:0.fileName = "W:\VMware\DSC\dcr_disk1.vmdk"
scsi1:0.deviceType = "disk"
scsi1:0.redo = ""

scsi1:1.present = "TRUE"
scsi1:1.mode = "independent-persistent"
scsi1:1.fileName = "W:\VMware\DSC\vote_disk1.vmdk"
scsi1:1.deviceType = "disk"
scsi1:1.redo = ""

scsi1:2.present = "TRUE"
scsi1:2.mode = "independent-persistent"
scsi1:2.fileName = "W:\VMware\DSC\dmdata_disk1.vmdk"
scsi1:2.deviceType = "disk"
scsi1:2.redo = ""

scsi1:3.present = "TRUE"
scsi1:3.mode = "independent-persistent"
scsi1:3.fileName = "W:\VMware\DSC\dmlog_disk1.vmdk"
scsi1:3.deviceType = "disk"
scsi1:3.redo = ""

scsi1:4.present = "TRUE"
scsi1:4.mode = "independent-persistent"
scsi1:4.fileName = "W:\VMware\DSC\dmlog_disk2.vmdk"
scsi1:4.deviceType = "disk"
scsi1:4.redo = ""

知识篇  数据共享集群  添加节点  环境准备  001.png

其他系统以及软件准备

参照两节点搭建文档内容一直

绑定共享磁盘

注意:
此处使用UDEV的方式绑定磁盘。

拷贝规则文件

/etc/udev/rules.d/66-dmdevices.rules 文件拷贝一份到节点三上

scp /etc/udev/rules.d/66-dmdevices.rules root@192.168.2.53:/etc/udev/rules.d/

重启服务

systemctl restart systemd-udev-trigger

查看是否生效

ls -lth /dev_dmdsc

通过blockdev --getsize64 /dev_dmdsc/* 检查裸设备是否挂载成功,能够正常反馈各个裸设备空间大小即为成功。

扩展准备

导出dmdcr_cfg_bak.ini配置文件

这一步需要在dmdba用户下操作,在控制节点dsc1操作

使用DMASMCMD工具export出备份文件dmdcr_cfg_bak.ini

cd /opt/dmdbms/bin
./dmasmcmd
# 指定导出命令
export dcrdisk '/dev_dmdsc/DCR' to '/dmdata/config/dmdcr_cfg_bak.ini'

知识篇  数据共享集群  添加节点  导出dmdcr文件  001.png

为节点三添加REDO日志文件

可选择任意节点操作,这里选择控制节点dsc1操作

查询当前redo日志文件信息

select file_id,path,rlog_size/1024/1024 from v$rlogfile;

知识篇  数据共享集群  添加节点  添加REDO日志文件  001.png

添加节点三的redo日志文件

alter database add node logfile '+DMLOG/log/dsc3_log01.log' size 2048, '+DMLOG/log/dsc3_log02.log' size 2048;

查看redo日志是否添加成功
使用dmctlcvt工具将dm.ctl转换为文本文件dmctl.txt,查看目录/dm8/dmdata目录下的dmctl.txt文件,新增节点的日志文件信息已经添加进dm.ctl

cd /opt/dmdbms/bin
./dmctlcvt TYPE=1 SRC=+DMDATA/data/dsc/dm.ctl DEST=/dmdata/config/dmctl.txt DCR_INI=/dmdata/config/dmdcr.ini
cat /dmdata/config/dmctl.txt |grep log

知识篇  数据共享集群  添加节点  添加REDO日志文件  002.png

使用dmasmtool工具登陆ASM文件系统,可以看到新增的节点日志文件

cd /opt/dmdbms/bin
./dmasmtool DCR_INI=/dmdata/config/dmdcr.ini
ls +DMLOG/log

知识篇  数据共享集群  添加节点  添加REDO日志文件  003.png

为节点三准备配置文件路径

将控制节点dsc1节点/dmdata/dsc1_config目录拷贝到节点三的/dmdata目录下,修改目录为dsc3_config

scp -r /dmdata/dsc1_config dmdba@192.168.2.53:/dmdata/dsc3_config

修改配置文件

修改节点三上的 dm.ini 文件
vim /dmdata/dsc3_config/dm.ini

CONFIG_PATH                     = /dmdata/dsc3_config
INSTANCE_NAME                   = DSC3

修改节点三上的 dmarch.ini 文件
vim /dmdata/dsc3_config/dmarch.ini

ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/DSC3/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC2/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32

修改节点一上的 dmarch.ini 文件

ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC2
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC2/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC3
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC3/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32

修改节点二上的 dmarch.ini 文件

ARCH_WAIT_APPLY = 0
ARCH_LOCAL_SHARE = 1
ARCH_LOCAL_SHARE_CHECK=0

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/ARCH/DSC2/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC1/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_REMOTE2]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC3
ARCH_INCOMING_PATH = +DMDATA/ARCH/DSC3/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 204800
ARCH_FLUSH_BUF_SIZE = 32

[ARCHIVE_LOCAL2]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmarch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 409600
ARCH_FLUSH_BUF_SIZE = 32

在节点三新建 dmdcr.ini 配置文件
vim /dmdata/config/dmdcr.ini

DMDCR_PATH = /dev_dmdsc/DCR             #dcr
DMDCR_MAL_PATH =/dmdata/config/dmasvrmal.ini   #dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 2

# ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 30
# 初次搭建环境时,取消该参数,需要手动运行ASM服务,后面搭建无误后,在使该参数生效
# DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/dmdata/config/dmdcr.ini

# DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 60
# 初次搭建环境时,取消该参数,需要手动运行DB服务,后面搭建无误后,在使该参数生效
# DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/dmdata/dsc3_config/dm.ini dcr_ini=/dmdata/config/dmdcr.ini
DMDCR_AUTO_OPEN_CHECK = 60
DMDCR_ASM_TRACE_LEVEL = 2

注意:
注意设置 dmdcr_seqo 为2,因为之前的两个节点使用了0和1。

修改MAL配置文件

所有节点都需要操作,配置文件相同

所有节点
vim /dmdata/config/dmasvrmal.ini

[MAL_INST1]
MAL_INST_NAME = ASM1
MAL_HOST = 10.10.10.1
MAL_PORT = 11256
[MAL_INST2]
MAL_INST_NAME = ASM2
MAL_HOST = 10.10.10.2
MAL_PORT = 11257
[MAL_INST3]
MAL_INST_NAME = ASM3
MAL_HOST = 10.10.10.3
MAL_PORT = 11258

修改dmmal.ini配置文件

所有节点都需要操作,配置文件相同

vim /dmdata/dsc1_config/dmmal.ini

[mal_inst0]
    mal_inst_name  = DSC1 
    mal_host       = 10.10.10.1 
    mal_port       = 11246 

[mal_inst1]
    mal_inst_name  = DSC2 
    mal_host       = 10.10.10.2 
    mal_port       = 11247 

[mal_inst2]
    mal_inst_name  = DSC3
    mal_host       = 10.10.10.3 
    mal_port       = 11248

注意:
注意每个节点的路径不一样,节点一为 /dmdata/dsc1_config;节点二为 /dmdata/dsc2_config;节点三为 /dmdata/dsc3_config

修改导出的dmdcr_cfg_bak.ini配置文件

这一步需要再控制节点dsc1上操作,CSS/ASMSVR/DB 都要配置

vim /dmdata/config/dmdcr_cfg_bak.ini

  DCR_N_GRP                = 3                    #集群环境有多少个GROUP,范围:1~16
  DCR_VTD_PATH             = /dev_dmdsc/VOTE      #vote
  DCR_OGUID                = 63635

[GRP]
  DCR_GRP_TYPE             = CSS                  #组类型(CSS/ASM/DB)
  DCR_GRP_NAME             = GRP_CSS              #组名
  DCR_GRP_N_EP             = 3                    #组内节点个数
  DCR_GRP_DSKCHK_CNT       = 60                   #磁盘心跳容错时间,单位:秒
[GRP_CSS]
  DCR_EP_NAME              = CSS1                 #CSS节点名
  DCR_EP_HOST              = 10.10.10.1           #心跳地址
  DCR_EP_PORT              = 11286                #CSS端口
[GRP_CSS]
  DCR_EP_NAME              = CSS2
  DCR_EP_HOST              = 10.10.10.2
  DCR_EP_PORT              = 11287
[GRP_CSS]
  DCR_EP_NAME              = CSS3
  DCR_EP_HOST              = 10.10.10.3
  DCR_EP_PORT              = 11288

[GRP]
  DCR_GRP_TYPE = ASM
  DCR_GRP_NAME = GRP_ASM
  DCR_GRP_N_EP = 3
  DCR_GRP_DSKCHK_CNT = 60
[GRP_ASM]
  DCR_EP_NAME              = ASM1                 #ASM节点名,和dmasvrmal的MAL_INST_NAME一致
  DCR_EP_SHM_KEY           = 64735                #共享内存标识
  DCR_EP_SHM_SIZE          = 1024                 #共享内存大小
  DCR_EP_HOST              = 10.10.10.1           #心跳地址
  DCR_EP_PORT              = 11276                #ASM端口
  DCR_EP_ASM_LOAD_PATH     = /dev_dmdsc
[GRP_ASM]
  DCR_EP_NAME              = ASM2
  DCR_EP_SHM_KEY           = 64736
  DCR_EP_SHM_SIZE          = 1024
  DCR_EP_HOST              = 10.10.10.2
  DCR_EP_PORT              = 11277
  DCR_EP_ASM_LOAD_PATH     = /dev_dmdsc
[GRP_ASM]
  DCR_EP_NAME              = ASM3
  DCR_EP_SHM_KEY           = 64737
  DCR_EP_SHM_SIZE          = 1024
  DCR_EP_HOST              = 10.10.10.3
  DCR_EP_PORT              = 11278
  DCR_EP_ASM_LOAD_PATH     = /dev_dmdsc

[GRP]
  DCR_GRP_TYPE             = DB
  DCR_GRP_NAME             = GRP_DSC
  DCR_GRP_N_EP             = 3
  DCR_GRP_DSKCHK_CNT       = 60
[GRP_DSC]
  DCR_EP_NAME              = DSC1                  #实例名,和dm.ini的INSTANCE_NAME一致
  DCR_EP_SEQNO             = 0                     #组内序号,不能重复
  DCR_EP_PORT              = 5236                  #实例端口,和dm.ini的PORT_NUM一致
  DCR_CHECK_PORT           = 11266                 #DCR检查端口
[GRP_DSC]
  DCR_EP_NAME              = DSC2
  DCR_EP_SEQNO             = 1
  DCR_EP_PORT              = 5236
  DCR_CHECK_PORT           = 11267
[GRP_DSC]
  DCR_EP_NAME              = DSC3
  DCR_EP_SEQNO             = 2
  DCR_EP_PORT              = 5236
  DCR_CHECK_PORT           = 11268

把dmdcr_cfg_bak.ini配置文件写回磁盘中

这一步在控制节点dsc1上操作,新增节点作为error节点

cd /opt/dmdbms/bin
./dmasmcmd
extend dcrdisk '/dev_dmdsc/DCR' from '/dmdata/config/dmdcr_cfg_bak.ini'

知识篇  数据共享集群  添加节点  写回磁盘  001.png

开始扩展

进入控制台执行扩展节点命令

这一步在控制节点dsc1上操作

cd /opt/dmdbms/bin
./dmcssm ini_path=/dmdata/config/cssm.ini
extend node

知识篇  数据共享集群  添加节点  开始扩展  001.png

程序会通知所有实例(CSS/ASMSVR/dmserver)更新信息,在 CSS 控制台执行 SHOW命令,能看到新增节点信息, ASMSVR/dmserver 是 error 节点, 程 序 会 通 知ASMSVR/dmserver 更新 MAL 信息

show

知识篇  数据共享集群  添加节点  开始扩展  002.png

启动节点三的服务程序

这一步需要在节点三执行

节点三先启动DMCSS服务

cd /opt/dmdbms/bin
./dmcss DCR_INI=/dmdata/config/dmdcr.ini

另开一个窗口
节点三再启动DMASM服务

cd /opt/dmdbms/bin
./dmasmsvr DCR_INI=/dmdata/config/dmdcr.ini

再开一个窗口
节点三再启动DB服务

cd /opt/dmdbms/bin
./dmserver /dmdata/dsc3_config/dm.ini dcr_ini=/dmdata/config/dmdcr.ini

配置监视器

这一步需要在dmdba用户下操作,在节点一操作即可

在监视器配置文件里添加内容
vim /dmdata/config/cssm.ini

CSSM_CSS_IP = 10.10.10.3:11288

进入监视器查看状态

cd /opt/dmdbms/bin
./dmcssm ini_path=/dmdata/config/cssm.ini
show

知识篇  数据共享集群  添加节点  开始扩展  003.png

注册服务

注意:
需要节点三把文件 /dmdata/config/dmdcr.ini 注销的关于ASM和DB的参数全部生效。

先停止节点三上的DB、ASM、CSS服务

这一步需要在root用户下操作,只需在节点三操作

cd /opt/dmdbms/script/root/

创建 CSS 服务

./dm_service_installer.sh -t dmcss -dcr_ini /dmdata/config/dmdcr.ini -p CSS3

创建 ASM 服务

./dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/config/dmdcr.ini -y DmCSSServiceCSS3.service -p ASM3

创建 DSC 服务

./dm_service_installer.sh -t dmserver -dm_ini /dmdata/dsc3_config/dm.ini -dcr_ini /dmdata/config/dmdcr.ini -y DmASMSvrServiceASM3.service -p DSC3

启动服务

systemctl start DmCSSServiceCSS3

信息:
集群启动一般情况下只需要启动两端节点 CSS 服务即可,service DmCSSServiceCSS start,其会自动拉起 ASM 服务和 DSC 服务。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服