【实例状态】GaussDB DN服务异常(上)

AI小学徒夏夏 秀才 2022-11-26 17:33:48

通过OPS确认节点状态是否已经恢复,或登录后台,执行cm_ctl query -Cv确认集群是否已经Normal。

如果状态已经为normal,表明故障已经恢复,集群正常,不再影响业务。确认是否需要分析故障的具体原因,如果需要,继续向下跟随文档进行分析。

确定是否为底层故障

首先确认是否是物理机、虚拟机、网络,底层故障等环境因素导致。

出现如下现象,大概率是底层故障:

现象一:同时出现大量告警。不区分节点分类。

现象二:闪报,告警之后,马上恢复。

总之,不管是何现象,先确认底层是否故障。

深入分析

本文档各步骤都会用到集群信息,执行cm_ctl query -Cvipd 命令查询集群状态,各信息含义如下图: 

查询集群状态,DN状态为Normal

问题现象:

DN服务异常。

问题分析及定界:

DN状态显示Normal,说明DN故障已经恢复,需要查看日志分析DN故障原因。 分析步骤:

Case1:登录故障dn节点,查看cm_agent日志:

cd $GAUSSLOG/cm/cm_agen # 找到告警时间点的日志文件cm_agent-xxx.log
复制

Case2:在cm_agent日志中搜索如下关键字(这些关键字在日志中处于同一行),如果有,按照描述处理,如果没有,跳转到步骤c

datanodeId=6001, dn_manual_stop=0, dn_disk_damage=0, nic_down=0, port_conflict=0, dn_build=0, dn_start_counts=0. 
# 最新版本也可能是如下所示:
datanodeId=6030, dn_manual_stop=0, g_dnDiskDamage=0, g_nicDown=0, port_conflict=1, g_dnBuild=0, g_dnStartCounts=0.
复制

各个标记含义:

dn_manual_stop=1,表示DN进程被停止过,通常有两种原因:(1)被用户停止(2)节点网络断开,被集群管理停止,执行处理步骤1。

dn_disk_damage=1 或 g_dnDiskDamage=1,表示磁盘故障,查看DN数据目录是否存在,目录权限是否正常,磁盘是否故障,磁盘是否满。执行处理步骤2。

nic_down=1或 g_nicDown=1 或 can’t find nic related with xxx,表示网卡故障, root 用户执行ifconfig命令查看网卡是否down掉,ethx口上的IP是否存在,执行处理步骤3。

port_conflict=1,表示端口冲突,查看同目录下对应时间点的system_call-xxx.log日志,该日志中记录了当时端口被那个进程占用了,如下。

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
gaussdb 24726 Ruby 9u IPv4 4143766500 0t0 TCP pekphisprc09662:42100 (LISTEN)
复制

或使用lsof -i:port确认。

绝大部分情况下,端口占用是由于DN进程重启,老进程退出没有及时释放端口,这种情况等待几秒到数十秒后,端口释放后新的DN进程就可以启动。执行处理步骤4。

Case3:在cm_agent日志中搜索如下关键字:restart msg from cm_server。 如果没有,跳转到步骤Step4。

如果有,说明DN进程被CM重启过,可能原因及处理方式如下:

oCMserver仲裁DN主备时重启。

o进程僵死重启。登陆cmserver主节点,查看日志,检查当时网络读写、CPU、内存、磁盘等监控指标,是否有升高压力。

cd $GAUSSLOG/cm/cm_server # 查看对应时间的cm_server-xxx.log日志, 搜索如下信息
phony dead times(5:5) already exceeded, will restart(6001) 或者 restart %u, there is not report msg for %d sec. 
复制

Case4:cm_agent日志中没有Step2、Step3中的关键字,但是有“DN START”关键字,DN进程可能是core掉重启,按照《查询集群状态,告警DN状态为CoreDump》章节处理 ,如果没有“DN START”关键字,转到Case5。

Case5:如果DN进程没有重启过: 查看DN日志 cd $GAUSSLOG/pg_log/dn_60xx, 找到告警时间点的日志,查看是否有报错,确认、收集保存错误日志。 登陆cmserver主所在节点, cd $GAUSSLOG/cm/cm_server,根据告警时间点,查看cm_server-xxx.log, 查看是否有报错信息,收集保存错误日志。 如果CMserver日志有如下【fenced UDF(34) heartbeat timeout, heartbeat:7, threshold:6. 】表示当时DN节点上的cm_agent与cm_server主节点之间短暂超时, 查看当时网络读写、CPU、内存、磁盘等监控指标,是否有升高压力。

Case6:登陆cmserver主所在节点,cd $GAUSSLOG/cm/cm_server,根据告警时间点,查看cm_server-xxx.log,搜索关键字Set database to read only mode此日志表示当时磁盘使用率超过阈值,DN被设置为只读状态。同时到cm_server数据目录/var/chroot/usr/local/cm/cm_server查看cm_server.conf 配置文件,查看参数datastorage_threshold_value_check的值,当磁盘使用率超过该参数值时,DN就会被设置为只读,避免磁盘被写满。df -h查看磁盘使用率,查看DN数据目录所在磁盘使用率。

处理步骤:

Step1:确认用户是否停止过集群,如果没有,就是节点断网后,内核集群管理自动将DN停止,排查断网原因。

Step2:检查磁盘是否故障,是否磁盘满(清理或移走磁盘数据)。如果是目录权限异常,修改目录权限,目录不存在或文件丢失,进行节点修复。

Step3:如果是网卡故障联系I层检查并修复;如果是IP丢失,重新配置IP。

Step4:确认端口被那个进程占用,解除端口占用。

Step5:如果不是上述情况请联系华为工程师处理。

查询集群状态,DN状态为Unknown

问题现象

dn服务异常,告警DN状态为Unknown

问题分析及定界

Case1:确认是否是虚拟机故障或者网络故障。 根据告警中的节点id,生成登录脚本,尝试登录到对应节点,如果不能登录到节点,则需要排查是否是虚拟机故障或者网络故障。如果是则修复。

Case2:如果短时间内集群没有恢复normal状态,同时按照如下定位并收集信息。

a、登录故障dn节点,cm_ctl query -Cvd查询dn进程的状态

b、执行ps -ux | more | grep datanode 查看dn进程状态,确认dn进程是否存在。如果不存在,则按照处理步骤c执行

c、执行ps -ux | more | grep cm_agent查看cm_agent进程是否在, 如果不存在,则执行处理步骤5,否则按照步骤d继续定位

d、cd $GAUSSLOG/cm/cm_agent , 查看告警时间点的cm_agent-xxx.log日志,查看dn故障的原因(参照DN normal中的定位步骤)

e、cd $GAUSSLOG/ffic 查看是否有ffic日志,如果存在ffic日志,则执行处理步骤1

​ f、cat /proc/sys/kernel/core_pattern 查看里面是否是路径且路径为Ruby用户可访问路径,如果是,则执行步骤g, 否则执行h

​ g、则进入该路径并查看是否有core文件生成,如果有core文件生成,则执行处理步骤2

​ h、执行cm_ctl query -Cvipd, 找到当前dn的数据目录,进入数据目录,查看是否有core文件生成,如果有则执行处理步骤2,否则执行h

​ i、cd $GAUSSLOG/pg_log/dn_xxx 进入dn日志目录,查看尾部内容,查看是否有ERROR、Fatal信息,如果有执行处理步骤3

处理步骤

1、将ffic日志下载,并获取高斯内核版本号(gaussdb -V命令),联系华为工程师。

2、将core文件下载,并获取高斯内核版本号(gaussdb -V命令),联系华为工程师。

3、查看ERROR、Fatal信息中是否包含端口绑定失败、共享内存或者信号量分配失败、文件丢失或无权限等信息,然后执行步骤4。

4、将ERROR、Fatal信息上下10行截屏并发送给华为工程师,将日志文件下载联系华为工程师。

5、如果不是上述情况请联系华为工程师处理。

 

...全文
121 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

67,989

社区成员

发帖
与我相关
我的任务
社区描述
汇集数据库的爱好者和关注者,大家共同学习、探索、分享数据库前沿知识和技术,像松鼠一样剥开科学的坚果;交流Gauss及其他数据库的使用心得和经验,互助解决问题,共建数据库技术交流圈。
数据库数据仓库 企业社区 北京·海淀区
社区管理员
  • Gauss松鼠会
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家同时关注Gauss松鼠会专家酷哥。

https://www.zhihu.com/people/ku-ge-78-98

试试用AI创作助手写篇文章吧