GaussDB(DWS)集群状态异常问题处理套路

举报
上官寒雨 发表于 2021/10/28 10:56:12 2021/10/28
【摘要】 使用Gaussdb(DWS)集群过程中经常会因为一些网络、磁盘等故障造成集群降级甚至不可用的情况;也会经常碰到实例状态出现catchup;某个实例xlog目录占用几百G甚至上T空间。本篇总结现网碰到以上问题处理套路,以便应急处理。

GaussDB(DWS)集群故障问题处理套路

【使用前提】

加载环境变量(仅线下纯软形态需要):source /opt/huawei/Bigdata/mppdb/.mppdbgs_profile

build相关日志路径:$GAUSSLOG/bin/gs_ctl

cm_agent日志路径:$GAUSSLOG/cm

实例日志路径:$GAUSSLOG/pg_log/dn_xx

系统日志(仅root用户):/var/log/message

【试用场景】

本方案适用以下场景:实例故障导致集群降级或不可用、实例状态长时间处于catchup状态、单实例目录下pg_xlog文件积压。碰到以上场景按照对应方案处理,根据实例状态找到对应案例或处理步骤进行处理。如下表:

维度

使用场景

确认方式

明确问题场景

集群降级

cm_ctl query

集群不可用

cm_ctl query

实例目录pg_xlog较大

 

实例长期处于catchup

cm_ctl query -Cvd

实例重启或主备切换

cm_ctl quer -Cvds

1 集群降级状态,业务可以正常连接

集群状态为degraded状态,该场景下业务可以正常连接,按照故障实例状态找到对应处理案例进行恢复。故障实例状态与处理见下表:

Check

异常值

处理方式

Check方法

实例状态

Need repair

1.1章节

cm_ctl query –Cv

Pending starting

1.2章节

Disk damaged

1.3章节

Down unknown

1.4章节

Build failed

1.5章节

Manually stopped

1.6章节

1.1 Need repair

若碰到实例状态为need repair状态按照以下步骤进行排查。

步骤一:查看实例状态

cm_ctl query –Cvd|grep -i "Need repair"

查询异常实例状态如下:

1  10-185-179-67 6001 /srv/BigData/mppdb/data1/master1    P Primary Normal |

2 10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Standby Need repair(Normal) |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

步骤二:判断实例是否redo

若为redo状态则为正常状态,等待自己恢复即可若未进行redo则按照后续步骤继续进行排查。判断实例redo方案如下:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=75275

步骤三:查看pg_log日志

该场景下实例处于standby need repair状态,查看异常实例最新pg_log日志(该日志在$GAUSSLOG/pg_log/dn_xx路径下)是否有如下关键日志:

编号

日志内容

处理方案

1

PANIC

联系华为工程师

2

could not connect to the primary server: GSSAPI

步骤四

排查pg_log按照对应处理方案处理。

步骤四:修复实例

方案一:从前台关闭kerbos,注意该方式会自动重启集群生效,业务会中断。

方案二:在后台关闭kerbos,该方案不需要重启集群,但是可能会存在前台kerbos状态与后台不一致情况,对业务无影响。后台关闭kerbos命令如下:

gs_ssh -c "gs_om -t kerberos -m uninstall -U omm"

1.2 Pending starting

该状态下与1.1排查思路相同,部分场景可能会有差别,排查步骤如下:

步骤一:查看实例状态

cm_ctl query –Cvd|grep -i "Pending Starting"

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1  10-185-179-67 6001 /srv/BigData/mppdb/data1/master1    P Primary Normal |

2 10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Pending Starting |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

步骤二:判断实例是否redo

若实例长时间处于pending starting,则该实例大概率进行redo为正常状态,等待自己恢复即可;若未进行redo则按照后续步骤继续进行排查。判断实例redo方案如下:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=75275

步骤三:确认是否存在数据文件损坏

         若实例状态在pending starting与其他状态来回切换则说明可能该实例有文件损坏。

查看异常实例最新pg_log日志(该日志在$GAUSSLOG/pg_log/dn_xx路径下)是否有如下关键日志:

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

编号

日志内容

1

The parameter destMax is equal to zero or larger than macro

2

PANIC

若日志中以上任意一个日志则符合该场景,实例状态不会自行恢复需要人为干预,联系华为工程师进行修复若排查pg_log后发现不属于该场景请联系华为工程师进行处理

步骤四:排查systemcall日志

 

编号

日志内容

处理方案

1

Input/output error

 

2

Cannot allocate memory

http://rnd-dayu.huawei.com:8081/index.php/Question/detail?id=56912

3

Could not create semaphores

http://rnd-dayu.huawei.com:8081/index.php/Question/detail?id=37396

按照以上应急方案进行处理

1.3 Disk damaged

实例为该状态下不会自行恢复,按照以下步骤进行逐一排查

步骤一:查看异常实例信息

cm_ctl query –Cvd|grep 6001

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1  10-185-179-67 6001 /srv/BigData/mppdb/data1/master1    P Primary Normal |

2  10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S disk damaged |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

根据集群状态可以看到异常实例以下信息

异常实例所在节点为:10-185-179-95

异常实例路径为:/srv/BigData/mppdb/data1/slave1

步骤二:查看实例所在磁盘使用率是否达到100%

根据步骤一查到异常实例信息,使用omm用户登录至异常实例所在节点(10-185-179-95)查看磁盘使用情况

 

df -lh

 

10-185-179-67:~ # df -lh

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       823G  122G  701G  15% /

udev             95G  248K   95G   1% /dev

tmpfs            95G  1.8M   95G   1% /dev/shm

/dev/sdd1       2.5T  650G  1.9T  26% /srv/BigData/mppdb/data2

/dev/sdc1       2.5T   34M  2.5T   1% /srv/BigData/mppdb/data3

/dev/sde1       2.5T  2.5T  0  100% /srv/BigData/mppdb/data1

/dev/sdb1       2.5T   34M  2.5T   1% /srv/BigData/mppdb/data4

根据排查结果发现异常实例所在磁盘使用率已经达到100%此时联系华为工程师处理!!若磁盘使用率远远未达到100%继续进行排查。

步骤三:实例所在磁盘损坏

【排查&&处理方案】

  • 查看主机BMC监控页面是否有告警,若BMC监控页面存在磁盘告警则说明磁盘故障。
  • 手动在实例目录所在磁盘创建文件是否能够成功,若能成功创建则磁盘正常。否则说明磁盘故障

若存在磁盘故障请联系硬件工程师对磁盘进行排查。硬件故障修复后对该实例按照gs_repalce方案进行修复,参考标准方案:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=145788

步骤四:实例所在磁盘分区挂载异常

df -lh

10-185-179-67:~ # df -lh

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda2       823G  122G  701G  15% /

udev             95G  248K   95G   1% /dev

tmpfs            95G  1.8M   95G   1% /dev/shm

/dev/sdd1       2.5T  650G  1.9T  26% /srv/BigData/mppdb/data2

/dev/sdc1       2.5T   34M  2.5T   1% /srv/BigData/mppdb/data3

/dev/sdb1       2.5T   34M  2.5T   1% /srv/BigData/mppdb/data4

如上结果磁盘挂载少了data1,若属于该情况使用以下命令进行挂载:

mount -a

挂载成功后对该盘所在实例使用gs_replace进行修复。若未成功挂载请联系操作系统工程师进行排查

gs_replace修复方案:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=145788

步骤五:实例目录丢失

根据步骤一查到异常实例路径为:/srv/BigData/mppdb/data1/slave1

ll /srv/BigData/mppdb/data1/slave1

若该目录为空或者不存在则按照实例修复方案进行修复。具体修复方式见标准方案:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=145788

1.4 Down unknown

该状态下实例无法自行恢复,请参考以下场景进行恢复

步骤一:查看异常实例信息

cm_ctl query –Cvd|grep 6001

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1  10-185-179-67 6001 /srv/BigData/mppdb/data1/master1    P Primary Normal |

2 10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Down Unknown |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

根据集群状态可以看到异常实例以下信息

异常实例所在节点为:10-185-179-95

异常实例路径为:/srv/BigData/mppdb/data1/slave1

步骤二:确认该实例是否存在文件损坏

查看该实例最新日志($GAUSSLOG/pg_log/dn_xxx)是否存在以下关键字:

编号

日志内容

1

Input/output error

若存在该报错由于磁盘坏道等硬件故障导致,确认磁盘无异常后请联系华为工程师进行处理。

步骤三:确认system_call日志

查看该实例所在节点最新system_call日志($GAUSSLOG/pg_log/cm_agent/system_call-xxx-curent.log)是否存在以下关键字:

编号

日志内容

1

invalid value for parameter

若出现该关键字说明配置文件被异常修改,查看对应备机实例或者其他实例该参数如何配置,正确修改该实例目下postgresql.conf即可自行恢复。

若按照以上步骤排查完均不符合请联系华为工程师处理

1.5 Build failed

【原因分析】

实例未该状态不会自行恢复,可以不需要做排查按照修复方案进行修复,若需要分析该状态原因可以查看gs_ctl$GAUSSLOG/bin/gs_ctl)日志报错提示,一般有以下几个原因:

1xlog被回收

2build过程中与主机网络闪断

【问题修复】

通过gs_replace方案进行修复:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=145788

若使用该方案仍然无法恢复请联系华为工程师处理。

1.6 Manually stopped

该状态为现场手动停止,需要跟现场了解手动停止原因,若无数据损坏等故障场景则可手动拉起该实例。手动启实例命令如下:

cm_ctl start -n $nodeid -D xxxx

2 集群不可用,业务中断

集群状态为unavailable状态,该类型集群故障我们目标在于先将其恢复至降级状态,恢复业务后再根据第一章继续进行恢复。集群不可用实例故障组合状态较多,常见类型如下表:

Check

异常值

说明

Check方法

实例状态

 

cm_ctl query –Cv

Down unkown/

Disk damaged/

Pending starting/

need repair/

build failed

promoting

故障场景下备机升主时长时间未成功

promoting

demoting

手动进行集群均衡时长时间不成功

down unkown/

disk damaged

need repair

实例故障时主实例未触发升主流程

Need repair/

pending starting

need repair

实例故障时主实例未触发升主流程

从备down unkown 集群不可用

om_monitor进程异常

2.1备:promoting主:down unkown/disk damaged/pending starting/need repair/build failed

步骤一:查看实例状态

cm_ctl query –Cvd|grep 6001

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1  10-185-179-67 6001 /srv/BigData/mppdb/data1/master1 P Pending Need repair |

2 10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Standby Promoting |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

根据集群状态可以看到异常实例以下信息:

6002处于promoting

6001处于pending need repair

该场景属于此章节实例状态组合场景,该状态持续时间较长(超过30min)说明为异常情况,按照步骤二进行排查。

步骤二:查看长时间promoting原因

实例状态为以上组合时,说明主实例故障备机触发升主流程若该状态保持较长时间(超过半小时)则为异常情况,只需要关注promoting实例为何长时间无法升主,具体排查与修复方案参考以下链接:

https://bbs.huaweicloud.com/blogs/239867

2.2 主:promoting;备:demoting

步骤一:查看实例状态

cm_ctl query -Cvd|grep 6001

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1 10-x-179-67 6001 /srv/BigData/mppdb/data1/master1 P Standby Wait promoting |

2 10-185-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Primary Demoting |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

根据集群状态可以看到异常实例以下信息:

6002处于Standby Wait promoting

6001处于Primary Demoting

该场景属于此章节实例状态组合场景,该场景出现在手动执行均衡集群时出现,持续时间较长(超过30min)说明为异常情况,按照步骤二进行排查。

步骤二:查看实例状态

主机为promoting备机为demoting,该场景为现场手动均衡集群时长时间未成功(超过半小时),则按照均衡集群失败帖子排查:

https://bbs.huaweicloud.com/blogs/203410

2.3 主:need repair/pending starting;备:need repair

步骤一:查看实例状态

cm_ctl query –Cvd|grep 6001

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1 10-x-179-67 6001 /srv/BigData/mppdb/data1/master1 P Pending Starting |

2 10-x-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Standby Need repair(Normal) |

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

根据集群状态可以看到异常实例以下信息:

6001处于Pending Starting

6002处于Standby Need repair(Normal)

该场景属于此章节实例状态组合场景,持续时间较长(超过10min)说明为异常情况,按照步骤二进行处理。

步骤二:触发升主流程

该场景下由于主实例异常退出被重新拉起后没能redo完恢复至故障前状态,cm_server未触发仲裁机制,导致集群不可用。

手动停止6001实例,待备机6002触发升主流程进行恢复,若停止后有实例长时间处于promoting(超过半小时)则按照2.1章节进行排查。

cm_ctl stop -n 1 -D /srv/BigData/mppdb/data1/master1

2.4 从备实例down unknown,集群不可用

步骤一:查看实例状态

cm_ctl query –Cvd|grep Down

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1 10-x-179-67 6001 /srv/BigData/mppdb/data1/master1 P Primary Normal |

2 10-x-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Standby Normal|

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Down Unknown

2  10-x-179-95 6007 /srv/BigData/mppdb/data2/master2     P Primary Normal |

1  10-x-179-67 6008 /srv/BigData/mppdb/data1/slave2      S Standby Normal |

3  ASG003        3005 /srv/BigData/mppdb/data2/dummyslave2 R Down Unknown

根据集群状态可以看到 ASG003所在节点两个从备实例3002与3005都为Down Unknown状态。

步骤二:确认om_monitor进程

使用omm用户登录ASG003节点查看是否有两个om_monitor进程

ps -ef|grep om_monitor|grep -v grep

若存在手动kill两个om_monitor进程,待自动拉起后集群状态恢复正常。

3 xlog积压

xlog积压场景一般体现在磁盘使用率较高,或者某一磁盘使用率明显高于其他磁盘。根据磁盘100%排查方案进行排查时发现,部分实例路径下pg_xlog目录过大(超过100G)可参考此修复方案。

步骤一:查看实例xlog文件大小信息

du -sh /srv/BigData/mppdb/data1/master1/pg_xlog

其中/srv/BigData/mppdb/data1/master1为实例路径,若该大小超过100G则按以下方案处理

步骤二:xlog积压排查

场景

说明

Check方法

延迟xlog文件回收

备份过程中产生该文件,该文件存在不会对xlog进行回收

查看积压实例下是否存在delay_xlog_recycle文件并且此时无备份任务。

复制槽异常

复制槽推进后才会回收xlog,复制槽推进异常时会影响xlog回收

连接对应dn查询:

select * from pg_get_replication_slots();

查看两条记录(主备与主从)restart_lsn字段是否相差较多。

checkpoint失败(较少)

xlog回收由checkpoint触发

pg_controldata $path

$path为实例路径

查看Latest checkpoint location值是否较小

wal_keep_segments

控制保留xlog文件个数

连接dn查询:

show wal_keep_segments;

查看改值是否过大(1024以下均正常)

具体排查方案及处理见以下链接:

https://bbs.huaweicloud.com/forum/forum.php?mod=viewthread&tid=83191

4 实例处于catchup状态

步骤一:查看实例状态

cm_ctl query –Cvd|grep Catchup

其中6001为故障dn实例编号,具体排查时替换为对应故障实例编号,状态如下:

1 10-x-179-67 6001 /srv/BigData/mppdb/data1/master1 P Primary Normal |

2 10-x-179-95 6002 /srv/BigData/mppdb/data1/slave1 S Standby Catchup|

3  ASG003  3002 /srv/BigData/mppdb/data1/dummyslave1 R Secondary Normal

2  10-x-179-95 6007 /srv/BigData/mppdb/data2/master2     P Primary Normal |

1  10-x-179-67 6008 /srv/BigData/mppdb/data1/slave2      S Standby Catchup |

3  ASG003 3005 /srv/BigData/mppdb/data2/dummyslave2 R Secondary Normal

根据集群状态可以看到6002与6008处于catchup状态。

步骤二:确认catchup场景并处理

根据步骤一查看实例状态有实例处于catchup状态,该状态持续时间较长(超过12~24小时)或业务反馈慢均为异常情况,需要人工排查catchup原因,通常影响实例catchup因素见下表:

场景

说明

Check方法

带索引导入、delete单表

业务异常产生较多xlog

解析主实例日志是否有较多delete或者Btree insert等关键字类型日志,解析命令如下:

pg_xlogdump $xlogfile

$xlogfile为任意xlog文件

锁冲突(数据页)

业务语句与catchup线程抢锁

查看主实例最新pg_xlog日志是否存在以下关键字:ERROR:  Lock wait timeout

bcm文件残留、bcm文件损坏

根据bcm文件未找到应数据文件,catchup线程反复被拉起

查看主实例最新pg_log日志是否有以下日志:

could not open file

具体排查与处理方案见以下链接:

https://bbs.huaweicloud.com/blogs/242269

5 实例重启或主备切换

集群运行过程当中发现有:

  • FI监控页面有主备断连或者不同步告警:

编号

日志内容

1

Datanode主备不通过或者断连,重要,xxxx

  • ps -ef 查看某一节点上gaussdb进程运行时间与其他实例不同
  • 查看集群状态不均衡需要分析主备切换原因。

若存在以上情况可按照以下步骤进行分析

步骤一:判断是否由于内存不足被oom

使用root用户查看/var/log/messages日志在实例重启时间点是否有kill关键字,若存在则说明由于max_process_memory参数设置过大,将参数修改为适当值进行观察,该参数计算方式详细见产品文档。

步骤二:是否被cma kill

         使用omm用户(云上版本使用Ruby用户)查看cm_agent日志($GAUSSLOG/cm/cm_agent/cm_agent-xxx.log)在实例重启时间点是否有kill关键字,若存在则说明dn hang或者cm_agentcm_server连接异常,若该问题偶尔出现一次可不需做任何处理,若出现较为频繁联系华为工程师处理

步骤三:进程core

         首先确认该集群是否配置操作系统core,若为配置请先配置操作系统core之后继续观察。core配置方案见以下链接:

         若该集群已经配置core请检查在对应目录检查是否有core文件产生,core文件产生路径查看参考以下命令:

cat /proc/sys/kernel/core_pattern,该命令结果为绝对路径直接在对应目录查看,否则在对应重启实例查看。

         若产生core文件解析core文件将堆栈反馈给华为工程师进行处理

         若集群集群配置core集群实例多次重启并且不属于步骤一与步骤二的场景,请联系华为工程师处理。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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