GaussDB(DWS)补丁问题定位指南

举报
召走小子 发表于 2020/11/05 15:12:37 2020/11/05
【摘要】 介绍了GaussDB(DWS)补丁的基本原理、常见问题定位方法及案例。

GaussDB(DWS)补丁问题定位指南

1      补丁基本原理

1.1      补丁总体流程      

image.png

补丁总体流程包括:补丁前巡检,安装补丁前准备,安装补丁,安装补丁后清理。

补丁前巡检:使用FusionInsight Tool Prober工具进行补丁前检查,如果存在不满足项需要提前修复不满足项。不影响业务,建议放到时间窗之前处理,不占用正式补丁时间窗。

安装补丁前准备:运维人员按照补丁指导书手动操作“补丁安装前准备”各步骤。包括准备工具和软件,补丁前配置,部署updateService等。不影响业务,建议放到补丁时间窗之前处理,不占用正式补丁时间窗。

安装补丁:使用UpdateService工具自动化安装GaussDB(DWS)补丁,是补丁升级的核心步骤,需要停止业务。耗时1小时。

安装补丁后清理:运维人员按照补丁指导书手动操作“补丁安装后操作”各个步骤。包括清理升级工具,删除节点omm用户权限等。耗时1小时。

补丁时间窗内操作耗时2小时,预留紧急预案时间2小时。所以现网补丁升级一般建议时间窗申请4小时。

1.2      日志路径

upds日志

/var/log/bigdata/update-service  oms节点

Manager日志

/var/log/bigdata/controller  oms节点

/var/log/bigdata/nodeagent  失败节点

数据库日志

/var/log/bigdata/mpp/upgrade  cms节点

/var/log/Bigdata/mpp/omm/om/gs_upgradectl-xxxx.log cms节点

/var/log/Bigdata/mpp/omm/om/gs_local-xxxx.log 所有节点均有

1.3      隔离业务

当前补丁为离线补丁,需要在补丁变更前彻底隔离业务防止对补丁过程造成干扰,导致补丁升级失败。可从以下几个方面来隔离业务:

1.    PuTTYomm用户登录后台任一个安装有MPPDB实例的节点注释白名单并重启cn。具体操作如下:

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then cp -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf /srv/BigData/mppdb/data1/coordinator/pg_hba.conf_comment; fi "

gs_ssh -c "hostname && if [ -f /srv/BigData/mppdb/data1/coordinator/pg_hba.conf ]; then sed -i '/^[^#].*sha256.*/s/\(.*\)/#@#@#\1/g' /srv/BigData/mppdb/data1/coordinator/pg_hba.conf; fi "

gs_ssh -c "ps -ef |grep coo|grep -v grep|awk -F ' ' '{print \$2}'|xargs kill -9"

2.    如果存在Database Manager应用,则进入Database Manager应用主页,点击Database Manager主页小卡片右上角的停止监控,暂时关闭Database Manager监控功能。

3.    PuTTYomm用户登录后台任一个安装有MPPDB实例的节点,清理后台访问连接和应用连接。具体操作如下:

source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile

gs_ssh -c "ps ux |grep -w gsql |grep -v grep |awk '{print \$2}' |xargs -r kill -9"

gs_ssh -c "ps ux |grep -w ap_agent |grep -v grep |awk '{print \$2}' |xargs -r kill -9"

1.4      gs_upgradectl补丁流程

image.png

gs_upgradectl补丁升级总体上分为升级、回滚、提交三大块。

升级:将二进制文件升级到目标版本。详细过程较长,但从逻辑上可划分为三阶段:

1)    升级前置。主要就是检查升级的各项前提条件是否满足,备份各种配置文件和数据,调整集群配置已满足下一步做升级的条件;

2)    升级。停集群,将二进制文件替换为目标版本,然后拉起集群;

3)    升级后置。进行基本的检查,确保升级到目标版本后基本功能正常。

回滚:升级流程任意一步报错均会自动进入回滚流程。回滚时先检查正向升级流程走到哪个步骤,然后从该步骤开始逐步回退到升级前初始状态。

提交:主要就是清理升级过程中产生的临时文件以及各种备份文件,并将升级前调整的配置还原为升级前状态。一旦执行提交操作,则不能再回退。

2      补丁问题定位思路

2.1      分析步骤

补丁升级工程几个关键步骤有安装manager补丁、安装集群补丁前准备、 安装集群补丁、提交。如果过程中报错,日志分析一般顺序为:

/var/log/Bigdata/update-service/runlog/update-manager.log (日志报错前后有post rest请求类似INFO信息,查看controller日志)

->/var/log/Bigdata/controller/controller.logcontroller_client.log

->/var/log/Bigdata/patch/MPPDB_MPPDBServer_installPatch.log

->/var/log/Bigdata/mpp/omm/om/gs_upgradectl-xxxx.log

/var/log/Bigdata/mpp/omm/om/gs_local-xxxx.log

数据库补丁升级相关日志分析详细步骤如下:

1、  使用omm用户登录主CMS节点,进入/var/log/Bigdata/mpp/omm/om/目录下;

2、  查看$GAUSSLOG/om/gs_upgradectl*.log日志,搜索关键字“GAUSS_5”确认报错的位置并获取具体报错原因。

3、  如果报错位置提示各个节点的hostname,则为local脚本报错,需要登录报错的节点,查询该节点的$GAUSSLOG/om/gs_local*.log日志,再次查询关键字“GAUSS_5”确认报错位置,通过对应的错误码来定位详细错误原因。

2.2      常见补丁升级问题

1.         停止老集群失败

·           如果$GAUSSLOG/om/gs_upgradectl*.log日志中有错误码GAUSS_51610,则表示停止老集群错误;

·           停止老集群错误的原因可能包括XLOG追赶慢,UNLOG表太多等。

·           使用cm_ctl stop -m s && cm_ctl start方式重启集群,然后重试升级。

2.         启动新集群失败

·           如果$GAUSSLOG/om/gs_upgradectl*.log日志中有错误码GAUSS_51607,则表示升级过程中启动集群错误;

·           根据gs_upgradectl*.log日志,获取启动集群的起止时间窗。

·           查看时间段内$GAUSSLOG/cm/{om_monitor | cm_agent | cm_server}目录下日志,确定是哪个实例在启动时间窗内未启动。

·           查看对应实例的$GAUSSLOG/pg_log/实例编号/ 下面的日志,获取具体的启动失败原因;

·           启动失败的主要原因包括:

                        i.              cgroup未挂载导致om_monitor拒绝启动集群;

                      ii.              端口号被占用导致gaussdb启动失败;

                    iii.              内核bug导致gaussdb频繁core dump等。

3.         证书原因导致升级后无法执行作业。

·           具体表现为升级提交时或者升级成功后无法执行DMLDDL操作;

·           具体报错为执行SQL,返回pooler相关错误;

·           如果开启了内部Kerberos认证,则可能为Kerberos认证问题(证书丢失,配置错误,证书过期等),排查并修复Kerberos问题或者关闭内部Kerberos认证;

·           也可能是通讯端口号sctp_portcontrol_port配置问题。查看执行作业的CNpg_log日志,获取通讯失败的DN实例,然后打开DN实例的pg_log,搜索“Initialize Communication Layer”日志,查看该DN的通讯端口号是否和静态配置文件里面的一致。

3      补丁问题相关案例

3.1      补丁工程创建及验证

3.1.1        升级C80SPC807部署update service失败,报错failed to generate keystore file

发生版本

GaussDB(DWS)】【C80SPC805->C80SPC807

问题描述

某局点集群升级c80spc807部署update service失败 failed to generate keystore file

image.png

问题分析

Suse版本openssh版本较高时,sshscp命令对转移符的解析有问题,openssh的问题,可以把脚本中的转移符去掉解决此问题。

解决方案

1.进入ups安装目录,找到隐藏文件.install_local.sh 先备份;

2.找到.install_local.sh文件的662665 去掉转义符‘\

image.png

3.1.2        升级C80SPC807验证补丁前检查结果失败

发生版本

GaussDB(DWS)】【C80SPC805->C80SPC807

问题描述

某局点集群升级c80spc807验证补丁前检查结果失败失败:

image.png

问题分析

上传的CheckReport.json文件中包含不满足项导致验证补丁前检查结果未通过。

解决方案

参考指导书,先卸载updateserviceupdatetool,然后重新安装解压安装,上传空CheckReport.json文件规避。

3.1.3        升级C80SPC808分发补丁包失败

发生版本

GaussDB(DWS)】【C80SPC805->C80SPC807

问题描述

升级808补丁分发补丁包失败:

image.png

问题分析

oms主备节点到mpp-dn01节点的互信丢失。

解决方案

使用如下步骤重新生成秘钥对并分发到集群中的其他节点

1. 使用omm用户登录互信故障节点,执行 sh $BIGDATA_HOME/om-agent/nodeagent/bin/update-ssh-key.sh生成新的ssh秘钥对;

2. 将新生成的/home/omm/.ssh/id_rsa.pub公钥文件copy至主oms节点,将该文件追加到主oms节点的/home/omm/.ssh/authorized_keys文件中;

3. 将主oms节点的/home/omm/.ssh/authorized_keys文件copy到集群中每个节点的/home/omm/.ssh目录下;

4. 从故障节点ssh其他节点验证修复结果。

3.2      安装manager补丁

3.2.1        安装manager补丁报错ERROR:Backup replace file error

发生版本

GaussDB(DWS) 6.5.1】【6.5.1->6.5.1.5

问题描述

某据点打6.5.1.5补丁,在安装manager补丁报错ERROR:Backup replace file error

image.png

问题分析

在执行setuptool补丁安装前配置时,没有执行preset

解决措施

重新按照补丁安装指导书执行preset步骤:

cd /opt/FusionInsight_SetupTool/upgrade

sh upgrade_setup.sh -s preset

3.3      安装集群补丁前准备

3.3.1        安装补丁前准备报错修改sudo目录权限失败

发生版本

GaussDB(DWS) 6.5.1】【6.5.1->6.5.1.5

问题描述

安装补丁前准备报错修改sudo目录权限失败

image.png

查看失败节点上没有sudo目录

image.png

问题分析

节点上sudo目录缺失导致安装补丁失败、

解决措施

拷贝正常节点上的sudo目录到失败节点,update-service页面点击重试即可。

3.3.2        安装集群补丁前准备报错ERROR: replaceCurmppdbpackage failed.

发生版本

GaussDB(DWS) 6.5.1】【6.5.1->6.5.1.5

问题描述

安装集群补丁前准备报错ERROR: replaceCurmppdbpackage failed.

image.png

image.png

查询MPPDB_ALL_PACKAGE目录下的包如下:

image.png

问题分析

环境不干净,因MPPDB_ALL_PACKAGE目录下存在多个包,导致解压命令执行失败,从而替换包失败。

解决措施

执行以下步骤移除多余的包

source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile

gs_ssh -c "mkdir /tmp/redhad_bak"

image.png

update页面点击重试。

3.4      安装集群补丁

3.5      补丁后验证

3.5.1        6.5.1.5补丁升级确认时报ssh错误

发生版本

GaussDB(DWS) 6.5.1】【6.5.1->6.5.1.5

问题描述

6.5.1.5补丁升级确认时报ssh错误

image.png

登录报错节点,在/var/log/Bigdata/update-service目录下过滤:grep -rn ERROR”有ssh的报错:

image.png

问题分析

ssh初次登录某个主机时,会出现如该提示:Are you sure you want to continue connecting (yes/no)?,可以将/etc/ssh/ssh_configStrictHostKeyChecking改为no

解决措施

手动ssh到报错节点,输入一次yes后,后面再进行ssh就不会以后提示了,然后在界面重试正常。


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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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