动态增加节点

DMDSC 集群支持动态增加节点,每次扩展可以在原有基础上增加一个节点。

动态增加节点要求当前 DMDSC 集群的所有节点都为 OK 状态,所有 DMSERVER 实例都处于 OPEN 状态,且可以正常访问。

注意

增加节点过程中,不应该有修改数据库状态或模式的操作。

14.1 动态增加节点流程

基于 DMASM 的 DMDSC 和基于 DMASM 镜像的 DMDSC 均支持动态增加节点,二者流程基本一致。基于 DMASM 的 DMDSC 动态增加节点时,需要使用相应的 DMASMSVR、DMASMTOOL 和 DMASMCMD 工具;基于 DMASM 镜像的 DMDSC 动态增加节点时,需要使用相应的 DMASMSVRM、DMASMTOOLM 和 DMASMCMDM 工具。

动态增加节点要求当前 DMDSC 集群的所有节点都为 OK 状态,所有 DMSERVER 实例都处于 OPEN 状态,且可以正常访问。每次扩展可以在原有基础上增加一个节点。

本章节主要基于 12.1 基于 DMASM 的 DMDSC 成功架构的数据共享集群系统,介绍如何动态扩展一个节点。

14.1.1 环境说明

新增节点环境为:

操作系统:RedHat Linux 64 位。

网络配置:eth0 网卡为 10.0.2.x 内网网段,该机器为 10.0.2.103;eth1 为 192.168.56.x 外网网段,该机器为 192.168.56.103。内网网段用于 MAL 通讯。

DM 各种工具位于目录:/opt/dmdbms/bin。

配置文件位于目录:/home/data。

表14.1 配置环境说明
实例名 IP 地址 操作系统 备注
DSC0 192.168.56.101 10.0.2.101 RedHat Linux 64 位 192.168.56.101 外部服务 IP; 10.0.2.101 内部通信 IP
DSC1 192.168.56.102 10.0.2.102 RedHat Linux 64 位 192.168.56.102 外部服务 IP; 10.0.2.102 内部通信 IP
DSC2 192.168.56.103 10.0.2.103 RedHat Linux 64 位 192.168.56.103 外部服务 IP; 10.0.2.103 内部通信 IP

14.1.2 操作流程

  1. 在 10.0.2.101 机器上使用 DMASMCMD 工具 export 出备份 dmdcr_cfg_bak.ini
[/opt/dmdbms/bin]# ./dmasmcmd
Asm> export dcrdisk '/dev/raw/raw1' to '/home/data/dmdcr_cfg_bak.ini'

若是基于 DMASM 镜像的 DMDSC,则会存在多个 DCRV 磁盘,此时使用 DMASMCMDM 工具 export 出任意一个磁盘备份即可。

  1. 为新增节点准备日志文件
  1. 使用 DIsql 登录任意一个节点执行添加日志文件操作:

至少两个日志文件,路径必须是 ASM 文件格式,大小可以参考其他两个活动节点。

SQL>alter database add node logfile '+DMLOG/log/DSC2_log01.log' size 256, '+DMLOG/log/DSC2_log02.log' size 256;

2)使用 dmctlcvt 工具将 dm.ctl 转换为文本文件 dmctl.txt,查看 dmctl.txt,新增节点的日志文件信息已经添加进 dm.ctl。

./dmctlcvt TYPE=1 SRC=+DMDATA/data/dsc/dm.ctl DEST=/home/data/dmctl.txt DCR_INI=/home/data/dmdcr.ini

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

[/opt/dmdbms/bin]# ./dmasmtool DCR_INI=/home/data/dmdcr.ini
ASM>ls +DMLOG/log
  1. 为新增节点准备 config_path

将 10.0.2.101 机器/home/data/dsc0_config 目录拷贝到 10.0.2.103 机器相同目录下,修改名字为/home/data/dsc2_config。

修改 dsc2_config 文件夹下的配置文件:

  1. 修改 dm.ini
CONFIG_PATH = /home/data/dsc2_config
instance_name = DSC2
  1. 如果打开了归档参数,修改 dmarch.ini
  1. 新建 DMDCR.INI 配置文件,保存到节点 10.0.2.103 的/home/data/目录下面

    注意设置 dmdcr_seqo 为 2,修改 DM.INI 路径。

DMDCR_PATH     = /dev/raw/raw1
DMDCR_MAL_PATH =/home/data/dmasvrmal.ini  #dmasmsvr使用的MAL配置文件路径
DMDCR_SEQNO   = 2
#ASM重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 0
DMDCR_ASM_STARTUP_CMD = /opt/dmdbms/bin/dmasmsvr dcr_ini=/home/data/dmdcr.ini

#DB重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 0
DMDCR_DB_STARTUP_CMD = /opt/dmdbms/bin/dmserver path=/home/data/dsc2_config/dm.ini dcr_ini=/home/data/dmdcr.ini
  1. 修改当前环境的 MAL 配置文件

    直接修改当前环境的 DMASVRMAL.INI 文件,添加新增节点信息,使用 DMASM 的所有节点都要配置,内容完全一样,并且将新增信息后的 DMASVRMAL.INI 文件拷贝到节点 10.0.2.103 的/home/data 目录下。

[MAL_INST3]
MAL_INST_NAME = ASM2
MAL_HOST = 10.0.2.103
MAL_PORT = 7238
  1. 修改 dmdcr_cfg_bak.ini,添加新增节点信息,CSS/ASMSVR/DB 都要配置所有组信息修改:
DCR_GRP_N_EP = 3
DCR_GRP_EP_ARR = {0,1,2}

每个组增加一个节点信息,注意 DCR_EP_SHM_KEY、端口号不能冲突;各组信息要放在各自的后面,即[GRP_CSS]中 CSS2 放在 CSS1 后面,[GRP_ASM]中 ASM2 放在 ASM1 后面,DSC2 放在 DSC1 后面。

[GRP_CSS]
DCR_EP_NAME	=	CSS2
DCR_EP_HOST		= 	10.0.2.103
DCR_EP_PORT		= 	9500

[GRP_ASM]
DCR_EP_NAME	= 	ASM2
DCR_EP_SHM_KEY	= 	93362
DCR_EP_SHM_SIZE	= 	20
DCR_EP_HOST	= 	10.0.2.103
DCR_EP_PORT	= 	9501
DCR_EP_ASM_LOAD_PATH	=	/dev/raw

[GRP_DSC] 
DCR_EP_NAME        =	DSC2
DCR_EP_SEQNO       =	2
DCR_EP_PORT        =	5236
  1. 使用 DMASMCMD 工具将新增节点信息写回磁盘,新增节点作为 error 节点
[/opt/dmdbms/bin]# ./dmasmcmd
Asm> extend dcrdisk '/dev/raw/raw1' from '/home/data/dmdcr_cfg_bak.ini'

若是基于 DMASM 镜像的 DMDSC,则会存在多个 DCRV 磁盘,此时需要使用 DMASMCMDM 工具将新增节点信息写回所有 DCRV 磁盘。

  1. 在 dmcssm 控制台执行增加节点命令
extend node

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

  1. 启动新的 DMCSS、DMASM 服务程序

在 10.0.2.103 节点启动 DMCSS、DMASMSVR 程序。

手动启动新的 DMCSS,dcr_ini 指向新的 DMDCR.INI 文件:

[/opt/dmdbms/bin]# ./dmcss DCR_INI=/home/data/dmdcr.ini

手动启动新的 DMASMSVR,dcr_ini 指向新的 DMDCR.INI 文件,DMASMSVR 启动故障重加入流程:

[/opt/dmdbms/bin]# ./dmasmsvr DCR_INI=/home/data/dmdcr.ini

如果 DMCSS 配置有自动拉起 DMASMSVR 的功能,可以等待 DMCSS 自动拉起 DMASMSVR 程序,不需要手动启动。

  1. 启动新的数据库服务器

如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。

如果需要手动启动,可参考下面的操作步骤:

10.0.2.103 机器:

./dmserver /home/data/dsc2_config/dm.ini dcr_ini=/home/data/dmdcr.ini
  1. 配置 dmcssm.ini

如果配置有监视器,则直接修改 dmcssm.ini,增加新扩节点 DMCSS 的 IP:PORT 配置项 CSSM_CSS_IP,并重启 dmcssm。

如果没有配置,可参考下面的操作步骤:

以搭建的 3 节点 DSC 环境为基础,配置对应的监视器,监视器放在第三方机器上,为 Linux 操作系统,dmcssm.ini 配置文件路径为/home/data/cssm/,可根据实际情况调整配置环境及路径。

  1. 配置 dmcssm.ini 文件
#和dmdcr_cfg.ini中的DCR_OGUID保持一致
CSSM_OGUID	=	63635 

#配置所有CSS的连接信息,
#和dmdcr_cfg.ini中CSS配置项的DCR_EP_HOST和DCR_EP_PORT保持一致
CSSM_CSS_IP = 10.0.2.101:9341
CSSM_CSS_IP = 10.0.2.102:9343
CSSM_CSS_IP = 10.0.2.103:9500

CSSM_LOG_PATH	=	/home/data/cssm	#监视器日志文件存放路径
CSSM_LOG_FILE_SIZE		=	32			#每个日志文件最大32M
CSSM_LOG_SPACE_LIMIT	=	0		#不限定日志文件总占用空间
  1. 启动 dmcssm 监视器
./dmcssm INI_PATH=/home/data/cssm/dmcssm.ini
注意

如果由于配置文件错误,动态增加节点失败,只能停掉所有实例,重新init dcr磁盘,不影响dmserver数据。

14.1.3 注意事项

  1. 增加节点前由用户保证所有 dmcss/dmasmsvr/dmserver 节点都是 OK 的,且都是活动的;
  2. 每次增加节点只能扩一个节点,扩展完成后可以再继续增加节点;
  3. 增加节点的过程中不能出现修改实例状态或模式的操作;
  4. 增加节点的过程中,如果发生 dmcss/dmasmsvr/dmserver 实例故障,会导致扩展失败;
  5. 扩展过程中操作失误(比如未修改 dmasvrmal.ini,未增加日志文件),会导致扩展失败;
  6. 执行完 extend node 命令,用户需要查看 log 文件,确认扩展操作是否成功;
  7. 扩展失败可能会导致集群环境异常,需要退出所有 dmcss/dmasmsvr/dmserver,重新 init dcr 磁盘。

14.2 动态删除节点流程

DMDSC 集群(基于 DMASM 的或基于 DMASM 镜像的)不支持动态删除节点。

微信扫码
分享文档
扫一扫
联系客服