本文讲述的环境均是在本地的VMware虚拟机环境,仅供参考。
DSC集群支持动态扩展,但每次扩展只能在原有基础上增加一个节点。同时需确保集群所有节点都为OK状态,所有的数据库实例都处于OPEN状态,并且可以正常访问。
下面介绍下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 = ""
参照两节点搭建文档内容一直
注意:
此处使用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/*
检查裸设备是否挂载成功,能够正常反馈各个裸设备空间大小即为成功。
这一步需要在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'
可选择任意节点操作,这里选择控制节点dsc1操作
查询当前redo日志文件信息
select file_id,path,rlog_size/1024/1024 from v$rlogfile;
添加节点三的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
使用dmasmtool工具登陆ASM文件系统,可以看到新增的节点日志文件
cd /opt/dmdbms/bin
./dmasmtool DCR_INI=/dmdata/config/dmdcr.ini
ls +DMLOG/log
将控制节点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。
所有节点都需要操作,配置文件相同
所有节点
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
;
这一步需要再控制节点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
这一步在控制节点dsc1上操作,新增节点作为error节点
cd /opt/dmdbms/bin
./dmasmcmd
extend dcrdisk '/dev_dmdsc/DCR' from '/dmdata/config/dmdcr_cfg_bak.ini'
进入控制台执行扩展节点命令
这一步在控制节点dsc1上操作
cd /opt/dmdbms/bin
./dmcssm ini_path=/dmdata/config/cssm.ini
extend node
程序会通知所有实例(CSS/ASMSVR/dmserver)更新信息,在 CSS 控制台执行 SHOW命令,能看到新增节点信息, ASMSVR/dmserver 是 error 节点, 程 序 会 通 知ASMSVR/dmserver 更新 MAL 信息
show
这一步需要在节点三执行
节点三先启动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
注意:
需要节点三把文件/dmdata/config/dmdcr.ini
注销的关于ASM和DB的参数全部生效。
先停止节点三上的DB、ASM、CSS服务
这一步需要在root用户下操作,只需在节点三操作
cd /opt/dmdbms/script/root/
./dm_service_installer.sh -t dmcss -dcr_ini /dmdata/config/dmdcr.ini -p CSS3
./dm_service_installer.sh -t dmasmsvr -dcr_ini /dmdata/config/dmdcr.ini -y DmCSSServiceCSS3.service -p ASM3
./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 服务。
文章
阅读量
获赞