GaussDB(DWS)节点替换&实例修复问题定位指南

举报
召走小子 发表于 2020/12/17 15:56:08 2020/12/17
【摘要】 介绍了GaussDB(DWS)节点替换&实例修复的基本原理及常见问题定位方法、案例。

GaussDB(DWS)节点替换&实例修复问题定位指南

1      节点替换&实例修复基本原理

1.1      节点替换总体流程


流程说明:

1.用户首先登陆主管理节点,对新替换节点进行preinstall

2.然后登陆FIM管理界面,点击重装主机,FIM将重装主机指令下发到新替换节点;

3.新替换节点上首先完成底层FIM相关组件的安装&配置;

4.然后ssh到主cm_server节点,调用gs_replace脚本进行上层数据库组件的installconfigstart

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_replaceinstall流程


流程说明:

install阶段要解决的问题就是在新替换节点上将二进制安装出来并将老节点上安装阶段相关配置同步一致。

此时的场景可能是一个全新的节点,也可能是安装失败有残留的节点,所以在流程的初始需先回滚;然后再检查安装的各项前提条件是否都已满足;然后才是实际的安装及配置同步。

1.回滚安装。有可能是失败重入有残留文件,所以需要先回滚到初始状态。

1a)检查所有待替换节点上临时目录下GaussReplace.dat文件,识别需要回滚的节点列表;

1b)对于需要回滚的节点,并行调用Uninstall.py脚本进行回滚;

1c)对所有待替换节点并行调用CheckInstall.py脚本进行安装前检查;

2.检查cn只读。如果集群处于只读状态,会导致后续节点替换流程报错,所以需要提前检查。

检查cndefault_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_replaceconfig流程


流程说明:

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)从正常cnpgxc_node系统表中剔除故障cn记录行

4)还原wal_keep_segments

5)增量build cn

6)增加故障cn记录行到各cnpgxc_node系统表中

7kill 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_replacestart流程


本阶段要解决的问题是启动待替换节点上各实例,如果指定了--force参数,则还需要将节点上所有实例强制build一遍。

2      节点替换&实例修复问题定位

2.1      分析步骤

节点替换&实例修复几个关键步骤有新节点preinstall,重装&配置底层FIM相关组件,故障节点installconfigstart

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_replaceconfig阶段报错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


排查报错节点和正常节点cnpostgre.conf文件,正常节点enable_prevent_job_task_startup参数是off的而且是被注释的,报错节点enable_prevent_job_task_startup参数是on的。

然后对报错节点进行如下排查:

1、对比报错节点和正常节点的二进制包不一致

报错节点如下:


正常节点如下:


2、发现二进制包不一致后,进一步查询主omspackaged-distributables下的包发现只有651的包,确定是没有替换软件包导致


替换了软件包的目录下文件如下:


问题分析

现场环境为6515补丁环境,在打完补丁后未进行替换包的动作未做替换软件包导致。

解决方案

按照6515补丁指导书执行了替换包的动作后,重新执行重装主机成功


 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。