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。
实例名 | 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 操作流程
- 在 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 出任意一个磁盘备份即可。
- 为新增节点准备日志文件
- 使用 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
- 为新增节点准备 config_path
将 10.0.2.101 机器/home/data/dsc0_config 目录拷贝到 10.0.2.103 机器相同目录下,修改名字为/home/data/dsc2_config。
修改 dsc2_config 文件夹下的配置文件:
- 修改 dm.ini
CONFIG_PATH = /home/data/dsc2_config
instance_name = DSC2
- 如果打开了归档参数,修改 dmarch.ini
-
新建 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
-
修改当前环境的 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
- 修改 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
- 使用 DMASMCMD 工具将新增节点信息写回磁盘,新增节点作为 error 节点
[/opt/dmdbms/bin]# ./dmasmcmd
Asm> extend dcrdisk '/dev/raw/raw1' from '/home/data/dmdcr_cfg_bak.ini'
若是基于 DMASM 镜像的 DMDSC,则会存在多个 DCRV 磁盘,此时需要使用 DMASMCMDM 工具将新增节点信息写回所有 DCRV 磁盘。
- 在 dmcssm 控制台执行增加节点命令
extend node
程序会通知所有实例(CSS/ASMSVR/dmserver)更新信息,在 CSS 控制台执行 SHOW 命令,能看到新增节点信息,ASMSVR/dmserver 是 error 节点,程序会通知 ASMSVR/dmserver 更新 MAL 信息。
- 启动新的 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 程序,不需要手动启动。
- 启动新的数据库服务器
如果 DMCSS 配置有自动拉起 dmserver 的功能,可以等待 DMCSS 自动拉起实例,不需要手动启动。
如果需要手动启动,可参考下面的操作步骤:
10.0.2.103 机器:
./dmserver /home/data/dsc2_config/dm.ini dcr_ini=/home/data/dmdcr.ini
- 配置 dmcssm.ini
如果配置有监视器,则直接修改 dmcssm.ini,增加新扩节点 DMCSS 的 IP:PORT 配置项 CSSM_CSS_IP,并重启 dmcssm。
如果没有配置,可参考下面的操作步骤:
以搭建的 3 节点 DSC 环境为基础,配置对应的监视器,监视器放在第三方机器上,为 Linux 操作系统,dmcssm.ini 配置文件路径为/home/data/cssm/,可根据实际情况调整配置环境及路径。
- 配置 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 #不限定日志文件总占用空间
- 启动 dmcssm 监视器
./dmcssm INI_PATH=/home/data/cssm/dmcssm.ini
注意如果由于配置文件错误,动态增加节点失败,只能停掉所有实例,重新init dcr磁盘,不影响dmserver数据。
14.1.3 注意事项
- 增加节点前由用户保证所有 dmcss/dmasmsvr/dmserver 节点都是 OK 的,且都是活动的;
- 每次增加节点只能扩一个节点,扩展完成后可以再继续增加节点;
- 增加节点的过程中不能出现修改实例状态或模式的操作;
- 增加节点的过程中,如果发生 dmcss/dmasmsvr/dmserver 实例故障,会导致扩展失败;
- 扩展过程中操作失误(比如未修改 dmasvrmal.ini,未增加日志文件),会导致扩展失败;
- 执行完 extend node 命令,用户需要查看 log 文件,确认扩展操作是否成功;
- 扩展失败可能会导致集群环境异常,需要退出所有 dmcss/dmasmsvr/dmserver,重新 init dcr 磁盘。
14.2 动态删除节点流程
DMDSC 集群(基于 DMASM 的或基于 DMASM 镜像的)不支持动态删除节点。