GaussDB(DWS)节点替换&实例修复问题定位指南
GaussDB(DWS)节点替换&实例修复问题定位指南
1 节点替换&实例修复基本原理
1.1 节点替换总体流程
流程说明:
1.用户首先登陆主管理节点,对新替换节点进行preinstall;
2.然后登陆FIM管理界面,点击重装主机,FIM将重装主机指令下发到新替换节点;
3.新替换节点上首先完成底层FIM相关组件的安装&配置;
4.然后ssh到主cm_server节点,调用gs_replace脚本进行上层数据库组件的install、config、start;
5.在新替换节点上完成集群主备均衡。
日志路径
1.底层FIM组件安装&配置报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/scriptlog/clearup.log
/var/log/Bigdata/mpp/scriptlog/postinstall.log
2.gs_replace报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/scriptlog/postinstall.log
主cm_server节点上
/var/log/Bigdata/mpp/omm/om/gs_replace-2020-xxxx.log
3.主备均衡报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/omm/om/gs_om-xxxx.log
1.2 gs_replace修复节点&实例流程
1.2.1 gs_replace总体流程
流程说明:
1.节点修复和实例修复共用gs_replace流程,差别在于节点修复需完整执行install+config+start三阶段,实例修复仅需要执行config+start两阶段;
2.如果入参是install,则进入install流程。
install阶段主要是完成新替换节点上二进制文件安装并从其它正常节点将一些配置文件同步过来。
3.如果入参是config,则进入config流程。
config阶段主要是完成新替换节点上数据库实例的初始化及配置同步。
4.如果入参是start,则进入start流程。
start阶段主要是启动新节点上数据库实例,然后内部会自动触发dn的全量build。
5.install->config->start三阶段需按顺序执行,不可跳跃,否则会报错;每个阶段如果执行报错,分析日志排除故障后均可重入。
1.2.2 gs_replace之install流程
流程说明:
install阶段要解决的问题就是在新替换节点上将二进制安装出来并将老节点上安装阶段相关配置同步一致。
此时的场景可能是一个全新的节点,也可能是安装失败有残留的节点,所以在流程的初始需先回滚;然后再检查安装的各项前提条件是否都已满足;然后才是实际的安装及配置同步。
1.回滚安装。有可能是失败重入有残留文件,所以需要先回滚到初始状态。
1a)检查所有待替换节点上临时目录下GaussReplace.dat文件,识别需要回滚的节点列表;
1b)对于需要回滚的节点,并行调用Uninstall.py脚本进行回滚;
1c)对所有待替换节点并行调用CheckInstall.py脚本进行安装前检查;
2.检查cn只读。如果集群处于只读状态,会导致后续节点替换流程报错,所以需要提前检查。
检查cn上default_transaction_read_only的值,预期为off,即集群未处于只读状态;
3.分发静态配置文件。新节点上相关脚本执行依赖静态配置文件,所以需要提前分发。
3a)检查待替换节点上静态配置文件目录是否存在,如果不存在,则创建出来;
3b)对于待替换节点,逐个生成静态配置文件并分发过去。
4.检查安装环境。
待替换节点调用CheckInstall.py检查安装环境。
5.安装二进制。
待替换节点调用Install.py安装二进制。
6.同步cgroup配置
6a)将本机cgroup配置文件同步到待替换节点;
6b)刷新cgroup配置:gs_cgroup --refresh
7.同步告警配置文件
将本机alarmItem.conf同步到待替换节点.
1.2.3 gs_replace之config流程
流程说明:
config阶段要解决的问题是完成待替换节点上各个实例数据目录的初始化及配置同步。
config前各项检查及准备工作
检查是否需要做config。检查当前节点GaussReplace.dat文件,如果不是start,则需要做config。
检查修复cm_agent,确保所有cm_agent实例状态正常。cm_agent实例负责节点上其它实例状态的仲裁和上报,需要先确保节点上cm_agent实例状态正常。
检查是否满足节点替换条件
检查标准:集群稳定处于degrade状态
cn修复流程
1)初始化数据目录
同步数据目录配置
设置wal_keep_segments=1000000
2)全量build cn
3)从正常cn的pgxc_node系统表中剔除故障cn记录行
4)还原wal_keep_segments
5)增量build cn
6)增加故障cn记录行到各cn的pgxc_node系统表中
7)kill cms刷新配置
8)启动cn
dn修复流程
1)初始化数据目录
2)同步数据目录配置
启动cn
1.并行启动修复的cn实例
source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile;cm_ctl start -n 1 -D '/srv/BigData/mppdb/data1/coordinator'
2.循环检查cn启动状态,最多检查12次,每次间隔5s,如果还未启动成功则报超时
检查锁集群语句是否仍然存在
select count(1) from pg_stat_activity where instr( query, 'pgxc_lock_for_backup()') > 0 or instr( query, 'pg_advisory_lock(65535,65535)') > 0;
安装Kerberos
如果满足如下条件则需要安装kerberos
/opt/huawei/Bigdata/mppdb/krb5.conf文件存在
/opt/huawei/Bigdata/mppdb/auth_config/mppdb-site.xml文件存在
$PGKRBSRVNAME环境变量值不为空
删除pgxc_node系统表中故障cn记录行
DROP NODE %s;
。。。
SELECT pgxc_pool_reload();
创建pgxc_node系统表中故障cn记录行
CREATE NODE %s WITH (type='coordinator', host='%s', port=%s);
。。。
SELECT pgxc_pool_reload();
设置sctp参数
注释修复实例中的如下两个参数
comm_sctp_port
comm_control_port
Kill cm_server
1.将被剔除但是不在本次修复范围内的cn实例id记录到主备cm_server节点如下文件
/opt/huawei/Bigdata/mppdb/core/bin/deleted_coordinator_id
2.kill 主备cm_server进程
Kill cm_agent
1.kill所有节点上cm_agent进程
proc_pid_list=`ps ux | grep cm_agent | grep -v grep | awk '{print $2}'`&& (if [ X"$proc_pid_list" != X"" ]; then echo "$proc_pid_list" | xargs kill -9 ; fi)
2.检查各节点kill结果,如果有失败节点,等待1s后再次kill,如果还是失败,则抛异常,否则成功
1.2.4 gs_replace之start流程
本阶段要解决的问题是启动待替换节点上各实例,如果指定了--force参数,则还需要将节点上所有实例强制build一遍。
2 节点替换&实例修复问题定位
2.1 分析步骤
节点替换&实例修复几个关键步骤有新节点preinstall,重装&配置底层FIM相关组件,故障节点install,config,start。
1.底层FIM组件安装&配置报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/scriptlog/clearup.log
/var/log/Bigdata/mpp/scriptlog/postinstall.log
2.gs_replace报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/scriptlog/postinstall.log
主cm_server节点上
/var/log/Bigdata/mpp/omm/om/gs_replace-2020-xxxx.log
3.主备均衡报错,可排查如下日志
新替换节点上
/var/log/Bigdata/mpp/omm/om/gs_om-xxxx.log
2.2 常见节点替换&实例修复问题
2.2.1 重装主机在第一步校验参数报错Failed to verify nodes connection.
发生版本
【GaussDB(DWS)】【C80SPC310】
问题描述
某局点重装主机在第一步校验参数报错:Failed to verify nodes connection. Maybe the password is incorrect or the network is abnormal.
问题分析
重装节点的HOSTKEY变更(重装OS或者重新生成HOSTKEY可能会导致HOSTKEY变更)。
解决方案
以omm用户登录主oms节点执行如下步骤:
执行vi ${BIGDATA_HOME}/om-server/om/etc/om/known_hosts命令,删除文件中包含待扩容或者重装节点主机名或者ip地址的行。
执行sh ${CONTROLLER_HOME}/sbin/restart-controller.sh命令重启controller,然后重新进行重装主机。
2.2.2 gs_replace在config阶段报错syntax error near unexpected token '|
发生版本
【GaussDB(DWS)】【6.5.1.8】
问题描述
某局点做节点替换,在config阶段报错syntax error near unexpected token '|:
排查现场os的/etc/issue.net文件中配置了linux欢迎语
问题分析
现场os的/etc/issue.net文件中配置了linux欢迎语,导致gs_replace脚本解析出错。
解决方案
清空/etc/issue.net文件内容然后重试即可。
2.2.3 重装主机在初始化服务和实例失败,postinstall日志报错ifcfg-bond0 not exist
发生版本
【GaussDB(DWS)】【8.0.0】
问题描述
重装主机在初始化服务和实例失败,postinstall日志报错ifcfg-bond0 not exist:
排查报错节点的网卡配置文件如下:
和现场操作人员确认,此bond网卡的配置文件是在安装操作系统时配置bond自动生成的,而平常手动配置bond的时候不会有此问题。
问题分析
bond的网卡配置文件名称不是ifcfg-bond0导致找不到网卡配置文件。
解决方案
将bond0的网卡配置文件修改为ifcfg-bond0,然后重启网络后在页面重新执行重装主机。
2.2.4 重装主机在初始化服务和实例失败,postinstall日志报错Failed to initialize instance
发生版本
【GaussDB(DWS)】【6.5.1】
问题描述
重装主机在初始化服务和实例失败,postinstall日志报错Failed to initialize instance:
排查报错节点和正常节点cn的postgre.conf文件,正常节点enable_prevent_job_task_startup参数是off的而且是被注释的,报错节点enable_prevent_job_task_startup参数是on的。
然后对报错节点进行如下排查:
1、对比报错节点和正常节点的二进制包不一致
报错节点如下:
正常节点如下:
2、发现二进制包不一致后,进一步查询主oms的packaged-distributables下的包发现只有651的包,确定是没有替换软件包导致
替换了软件包的目录下文件如下:
问题分析
现场环境为6515补丁环境,在打完补丁后未进行替换包的动作未做替换软件包导致。
解决方案
按照6515补丁指导书执行了替换包的动作后,重新执行重装主机成功
- 点赞
- 收藏
- 关注作者
评论(0)