GaussDB(DWS)修改IP问题定位指南
GaussDB(DWS)修改IP问题定位指南
1 修改IP基本原理
1.1 修改IP总体流程
- 首先进行修改IP前置准备,包括检查环境,导出当前IP配置信息,停止集群
- 硬件侧实施机器物理IP修改;
- 软件侧修改FIM软件中IP信息,首先修改前面导出的IP配置文件,然后执行修改IP的脚本,如果涉及修改主备管理节点管理IP,则还需要更换HA证书;
- 同步配置集群,即调用内核gs_om工具修改mpp数据库内核软件中的IP信息。
日志路径
1、修改FIM的IP信息
/var/log/Bigdata/controller/modify.log
2、修改mpp数据库内核软件的IP
/var/log/Bigdata/nodeagent/agentlog/agent.log
/var/log/Bigdata/mpp/scriptlog/doipchange.log
/var/log/Bigdata/mpp/omm/om/gs_om*.log
1.2 gs_om修改IP流程
1.2.1 gs_om修改ip总体流程
gs_om修改IP分为正向修改和回滚两大块。
正向修改包括:修改IP前置准备、正式修改IP、修改IP后置清理。
修改IP前置准备:
前置条件检查类:检查是否有cn剔除、检查集群是否停止、检查集群是否只读、校验xml文件与集群当前配置差异;
备份类:备份集群参数文件、备份集群配置文件、备份ca证书;
状态配置等修改类:分发新xml文件、关闭cn自动剔除功能。
修改IP:
启动集群前:修改ca证书,修改cn、dn实例配置文件、修改集群静态配置文件;
启动集群后:刷新pgxc_node系统表;
修改IP后置清理:
检查集群状态、还原cn自动剔除功能、清理临时文件。
回滚流程:
从正向流程报错点逐步回滚:
1.如果已更新系统表,则回滚系统表修改;
2.如果已启动集群,则停止集群;
3.如果已修改配置文件,则还原集群配置文件;
4.如果已进行修改IP前置准备,则还原前置准备阶段更改(关闭cn自动剔除,清理备份的配置文件);
5.清理备份目录。
1.3 gs_om修改IP主要步骤
1.3.1 数据修改IP临时目录及回滚步骤文件
CHANGEIP_BACKUP_DIR = $PGHOST/change_ip_bak
CHANGEIP_ROLLBACK_STEP = $PGHOST/change_ip_bak/GaussChangeIP.dat
1.3.2 如何检查是否有CN剔除
执行如下命令,检查结果中是否有Deleted,如果有,则对应cn是被剔除的
cm_ctl view -c|grep -B 1 -E '^role[ ]+: .*'
1.3.3 如何检查集群是否停止
所有节点ps查进程cm_server、cm_agent、gs_gtm、gaussdb,如果都没有则认为已停止,否则未停止
ps ux | grep %s | grep -v grep | wc -l
1.3.4 如何检查集群是否只读
gs_guc check -N all -Z coordinator -I all -c 'default_transaction_read_only'
1.3.5 如何校验xml文件与集群当前配置差异
校验标准:仅ip存在差异,其它配置一致,则校验通过;否则校验不通过。
校验方法:
1.检查出ip和端口外的其它所有配置是否一致,预期一致;
2.检查ip和端口信息是否不一致,预期不一致。
1.3.6 备份各种配置文件
1、使用gs_backup备份参数文件;
2、备份静态配置文件;
$GAUSSHOME/bin/cluster_dynamic_config -> CHANGEIP_BACKUP_DIR
3、备份ca证书。
有etcd的情况下,从etcd数据目录下将如下几个文件、目录备份到CHANGEIP_BACKUP_DIR备份目录:
etcd.key、etcd.crt、member
1.3.7 修改各种配置文件
- 修改静态配置文件;
基于集群新配置重新生成静态配置文件。
- 修改gtm、cn、dn实例配置文件;
1)gtm
gtm.conf
tmpGTMDict={listen_addresses,port,nodename,local_host,local_port,active_host,active_port}
2)cn
postgresql.conf
tmpCNDict={listen_addresses,local_bind_address,port}
gtmInfoDict={gtm_host,gtm_port,gtm_host1,gtm_port1}
注释如下参数:comm_sctp_port,comm_control_port
3)dn
postgresql.conf
tmpDNDict={listen_addresses,local_bind_address,port}
gtmInfoDict={gtm_host,gtm_port,gtm_host1,gtm_port1}
ReplConninfo={replconninfo1,replconninfo2}
注释如下参数:comm_sctp_port,comm_control_port
- 修改pg_hba文件;
1)注释老的pg_hba配置
gs_guc set -Z coordinator -N all -I all -h "host all all %s/32"
gs_guc set -Z datanode -N all -I all -h "host all all %s/32"
2)添加新的pg_hba配置
将所有内部ip的认证方式用gs_guc添加到pg_hba.conf文件中。
1.3.8 如何更新pgxc_node系统表
在启动集群后还需要更新所有cn中的pgxc_node系统表信息。修改方法如下:
在每个cn节点构建如下sql语句并更新当前节点cn的pgxc_node系统表
update pg_catalog.pgxc_node set (node_host, node_host1, node_port, node_port1)=('%s','%s','%s','%s') where node_name='cn_%s';--除当前cn外每个cn一条
update pg_catalog.pgxc_node set (node_host, node_host1, node_port, node_port1)=('%s','%s','%s','%s') where node_name='dn_%s_%s';--每个主dn一条
select * from pg_catalog.pgxc_pool_reload();
2 修改IP问题定位
2.1 分析步骤
修改IP几个关键步骤有修改机器物理IP,修改FIM软件IP信息,修改数据库软件IP信息。修改机器物理IP由硬件侧来保证。
修改FIM的IP信息报错,可分析如下日志:
/var/log/Bigdata/controller/modify.log
修改mpp数据库内核软件的IP信息报错,可分析如下日志:
/var/log/Bigdata/nodeagent/agentlog/agent.log
2.2 常见修改IP问题
2.2.1 修改ip报错启动集群失败
发生版本
【GaussDB(DWS)】【C80SPC310】
问题描述
某局点测试集群修改ip失败导致集群不可用:
问题分析
分析节点system call日志,确认是由于信号量不足导致启动失败:
解决方案
调高节点信号量然后重试。
2.2.2 修改ip报错停止集群失败
发生版本
【GaussDB(DWS)】【6.5.1.8】
问题描述
某局点修改集群ip,未做同步配置操作,直接启动了集群,集群状态异常,继续补做同步配置,同步配置报错停止集群失败:
在节点上查询发现有cm_agent进程存在
问题分析
未做同步配置,集群软件中记录的还是旧ip信息,与当前机器实际物理ip不一致,所以直接启动集群会起不来;同理,此时如果继续补做同步配置,在前置检查中检测到cm_agent进程存在,认为集群未完全停止,会先尝试停止集群,但是由于ip信息不对导致ssh其它节点停集群也报错。
解决方案
1.分别登录每个节点,执行cm_ctl stop -n nodeid命令停止本节点实例;
2.在界面重新执行同步配置。
2.2.3 修改ip报错gs_guc:The gs_ctl build is doing now, the gs_guc process should be stopped
发生版本
【GaussDB(DWS)】【8.0.0】
问题描述
修改ip报错gs_guc:The gs_ctl build is doing now, the gs_guc process should be stopped:
问题分析
现场之前在修改ip未成功情况下反复尝试各种操作,导致日志分叉触发build,在有dn build的情况下gs_guc不允许修改参数,所以报错。
解决方案
现场按如下方式规避并继续完成ip修改:
1)将master3实例目录下build_completed.start、gs_build.pid两个文件mv改名;
2)修改脚本让流程在启动集群前停住;
脚本名:/opt/huawei/Bigdata/FusionInsight_MPPDB_8.0.0/install/FusionInsight-MPPDB-8.0.0/package/MPPDB/script/impl/om/OmImpl.py
函数名:ChangeIPAndPort
增加如下while循环等待代码:
并创建while循环中标志文件
touch /home/omm/modify_ip_flag
3)修改脚本调长集群启动超时时间,确保master3在启动阶段能完成build;
脚本名:/opt/huawei/Bigdata/FusionInsight_MPPDB_8.0.0/install/FusionInsight-MPPDB-8.0.0/package/MPPDB/script/impl/om/OLAP/OmImplOLAP.py
函数名:startCluster
注释原有启动命令,新增一行,将启动时间调整为86400:
4)界面重新执行同步配置即可。
- 点赞
- 收藏
- 关注作者
评论(0)