DSC 动态拓展节点
DMDSC 集群支持动态拓展节点,每次拓展可以在原有基础上增加一个节点,动态拓展要求当前 DMDSC 集群的所有节点都为 OK 状态,所有 DMSERVER 实例都处于 OPEN 状态,且可以正常访问
注意:拓展节点过程中,不应该有修改数据库状态或模式的操作
环境
原 DSC 集群为两节点,新增节点 DSC2 配置目录为 /home/dmdba/dmdbms/data,因为是共享存储集群,因此在开始前新增的 DSC2 节点也要添加共享磁盘到虚拟机,设置好共享磁盘配置,并且安装对应版本的 DM 数据库
节点 | IP |
---|---|
DSC0 | 192.168.244.162 |
DSC1 | 192.168.244.163 |
DSC2 | 192.168.244.164 |
操作流程
在 DSC1 上使用 DMASMCMD 工具 export 出备份 dmdcr_cfg_bak.ini
[dmdba@192 bin]$ ./dmasmcmd
ASM>export dcrdisk '/dev/raw/raw1' to '/home/dmdba/dmdbms/data/dmdcr_cfg_bak.ini'
为新增节点准备日志文件,使用 disql 登陆任意一个节点执行添加日志文件操作,这里登陆 DSC0 节点,登陆操作查看 DSC 部署博客
[dmdba@192 bin]$ ./disql SYSDBA/SYSDBA@DSC
SQL>alter database add node logfile '+DMLOG/log/DSC2_log01.log' size 256, '+DMLOG/log/DSC2_log02.log' size 256;
查看是否添加成功
[dmdba@192 bin]$ ./dmasmtool DCR_INI=/home/dmdba/dmdbms/data/dmdcr.ini
ASM>ls +DMLOG/log
为新增节点 DSC2 准备 config_path,将 DSC0 节点的 /home/dmdba/dmdbms/data/dsc0_config 目录拷贝到 DSC2 节点相同目录下,修改名字为 dsc2_config
修改dsc2_config/dm.ini
CONFIG_PATH=/home/dmdba/dmdbms/data/dsc2_config
INSTANCE_NAME=DSC2
如果打开了归档参数,修改 dmarch.ini,本次试验中没有,因此不修改
新建 dmdcr.ini 文件,保存到节点 DSC2 的 /home/dmdba/dmdbms/data 目录下面,设置 dmdcr_seqo 为2,修改 dm.ini 路径
DMDCR_PATH = /dev/raw/raw1
DMDCR_MAL_PATH =/home/dmdba/dmdbms/data/dmasvrmal.ini
#dmasmsvr 使用的 MAL 配置文件路径
DMDCR_SEQNO = 2
#ASM 重启参数,命令行方式启动
DMDCR_ASM_RESTART_INTERVAL = 20
DMDCR_ASM_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmasmsvr dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
#DB 重启参数,命令行方式启动
DMDCR_DB_RESTART_INTERVAL = 20
DMDCR_DB_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver path=/home/dmdba/dmdbms/data/dsc2_config/dm.ini dcr_ini=/home/dmdba/dmdbms/data/dmdcr.ini
修改当前环境的所有 dmasvrmal.ini 文件,添加新增节点信息,并且将修改后的 dmasvrmal.ini 文件拷贝到 DSC2 节点的 /home/dmdba/dmdbms/data 目录下
[MAL_INST3]
MAL_INST_NAME = ASM2
MAL_HOST = 192.168.244.164
MAL_PORT = 7238
修改当前环境的所有 dmmal.ini 文件,添加新增节点信息,后续实例会重新读取 MAL 配置文件,更新内存信息
[mal_inst2]
mal_inst_name = DSC2
mal_host = 192.168.244.164
mal_port = 9342
修改 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 = 192.168.244.164
DCR_EP_PORT = 9345
[GRP_ASM]
DCR_EP_NAME = ASM2
DCR_EP_SHM_KEY = 93362
DCR_EP_SHM_SIZE = 10
DCR_EP_HOST = 192.168.244.164
DCR_EP_PORT = 9353
DCR_EP_ASM_LOAD_PATH = /dev/raw
[GRP_DSC]
DCR_EP_NAME = DSC2
DCR_EP_SEQNO = 2
DCR_EP_PORT = 5238
DCR_CHECK_PORT = 9743
使用 DMASMCMD 工具将新增节点信息写回磁盘,新增节点作为 error 节点
[dmdba@192 bin]$ ./dmasmcmd
ASM>extend dcrdisk '/dev/raw/raw1' from '/home/dmdba/dmdbms/data/dmdcr_cfg_bak.ini'
在 dmcssm 执行拓展节点命令,show 查看,可以看到 DSC2 是 error 节点
extend node
show
在 DSC2 节点启动 DMCSS 和 DMASMSVR 程序和 DMSERVER 实例,由于配置了自动拉起,因此TODO
配置监控器,修改 dmcssm.ini,增加新扩节点 DMCSS 的 IP:PORT 配置项 CSSM_CSS_IP,并重启 dmcssm
#和 dmdcr_cfg.ini 中的 DCR_OGUID 保持一致
CSSM_OGUID = 63635
#配置所有 CSS 的连接信息,
#和 dmdcr_cfg.ini 中 CSS 配置项的 DCR_EP_HOST 和 DCR_EP_PORT 保持一致
CSSM_CSS_IP = 192.168.244.162:9341
CSSM_CSS_IP = 192.168.244.163:9343
CSSM_CSS_IP = 192.168.244.164:9345
CSSM_LOG_PATH = /home/dmdba/dmdbms/data/cssm/log #监视器日志文件存放路径
CSSM_LOG_FILE_SIZE = 32 #每个日志文件最大 32M
CSSM_LOG_SPACE_LIMIT = 0 #不限定日志文件总占用空间
至此 DSC 节点拓展完成
注意
- 如果由于配置文件错误,动态扩展节点失败,只能停掉所有实例,重新 init dcr 磁盘,不影响 dmserver 数据
- 扩展节点前由用户保证所有 dmcss/dmasmsvr/dmserver 节点都是 OK 的,且都是活动的;
- 每次扩展节点只能扩一个节点,扩展完成后可以再继续扩展节点;
- 扩展节点的过程中不能出现修改实例状态或模式的操作;
- 扩展节点的过程中,如果发生 dmcss/dmasmsvr/dmserver 实例故障,会导致扩展失败;
- 扩展过程中操作失误(比如未修改 dmmal.ini、asmsvrmal.ini,未增加日志文件),会导致扩展失败;
- 执行完 extend node 命令,用户需要查看 log 文件,确认扩展操作是否成功;
- 扩展失败可能会导致集群环境异常,需要退出所有 dmcss/dmasmsvr/dmserver,重新 init dcr 磁盘
达梦在线服务平台:https://eco.dameng.com