服务器停止响应或掉电
本节介绍故障发生时,如何确认故障是硬件故障、网络故障、还是操作系统故障又或者是数据库自身故障。
背景信息
GaussDB 200集群由多台服务器组成,基于上一节的集群HA介绍可知,单点故障发生时,GaussDB 200能完成集群服务自恢复并对外提供业务。虽然能继续提供业务,但是会存在负载不均衡,集群压力集中于某一或某些节点上,集群可靠性降低,因此整个集群状态为“Degraded”,balanced显示为“No”。发生非单点故障时,集群将无法继续对外提供服务,集群状态为“Unavailable”。
不同原因的单点故障发生时,GaussDB 200实例状态变化说明如下:
- 服务器掉电故障、网卡和网络故障、OS故障。
GaussDB 200无法获取到故障服务器上的实例,超过15s后被认为“Down”。该服务器上如果有主DN和主GTM,其对应的备将升主,同时集群balanced状态显示为No。该服务器上如果有CN,则在被识别为“Down”600s后,CN将被自动剔除,即变为“Deleted”状态。
- 磁盘故障。
目前处理的文件系统故障有:EROFS、EIO、EACCES、ENOENT、ENOSPC。GaussDB 200会定时探测磁盘是否有这些文件系统的错误发生,如果有,则立即停止相关实例,且不再对其进行重启。如果相关实例涉及主DN和主GTM,则其对应的备将升主,集群balanced状态为No。如果相关实例涉及CN,则600s后CN将被自动剔除。
- GaussDB 200自身软件故障。
通常只是某节点上部分实例异常,GaussDB 200会尝试重启异常实例。重启成功到实例恢复与集群其他服务器通信前,实例状态为“Pending”,恢复通信后变为“Normal”。超过15s没有重启成功,实例的状态将被置为“Down”。如果是主DN或主GTM“Down”,GaussDB 200会将备实例升主,集群balanced状态为No。如果是CN“Down”,GaussDB 200会等待600s再次确认实例不能恢复后,将CN剔除,CN状态变为“Deleted”。
综上可见,通过观察集群状态可以初步判断集群故障的可能原因。详细参见如下操作步骤。
操作步骤
- 以操作系统用户omm登录GaussDB 200集群任一主机。执行source ${BIGDATA_HOME}/mppdb/.mppdbgs_profile命令启动环境变量。
如果选中的节点无法登录,则可能该节点故障,请更换节点进行登录。
- 执行如下命令查询集群状态。根据集群状态预判可能的故障原因并进行处理。
gs_om -t status --detail在状态信息中找到如下信息段:
[ Cluster State ] cluster_state : Normal redistributing : No balanced : Yes表1 集群故障界定及处理办法 cluster_state
可能原因
处理办法
Normal
- 能短时间自恢复的操作系统故障或网络故障。
- 数据库内部运行异常。
- 确认balanced是否为No。如果是,说明集群有实例发生过主备切换。为保证各服务器的负载均衡,请执行命令gs_om -t switch --reset重置实例状态。
- 参考数据库故障定位手段进行进一步的排查和确认。
Degraded
如果异常实例所在服务器上所有实例均异常,则可能是该服务器发生了掉电、操作系统故障或网络故障。
- 只是DN异常,请按DN服务器异常中的方法进行处理。
- 既有CN异常又有DN异常,请参考CN、DN合设服务器异常进行处理。
如果异常实例所在服务器上只有部分实例异常,则可能是磁盘或数据库实例出现了问题。
- 隔离故障服务器。
只是DN异常,请参考DN服务器异常中的隔离故障服务器。
既有CN异常又有DN异常,请参考CN、DN合设服务器异常中的隔离故障服务器。
- 参考磁盘故障定位手段和数据库故障定位手段进行故障定位和恢复。
- 参考修复MPPDBServer实例进行修复。
Unavailable
集群多个节点出现故障导致了集群实例非单点故障。集群不可用,已不能对外提供服务,业务中断。
请优先排查是否有设备异常断电或者网络故障发生。异常断电和网络故障恢复后,GaussDB 200会自动重启和监控集群实例,使集群恢复正常。若非以上原因,建议联系华为工程师共同尝试使用已备份的数据进行恢复。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」关注作者【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。评论




