GaussDB DN故障-状态Need repair
- 故障现象
查询集群状态,DN组件状态为Need repair,产生DN服务异常告警。
- 故障原因
可能原因有以下:
- 主DN故障,备DN在redo过程中无法接收主机日志,出现Need repair状态。
- 网络异常,备DN无法与主DN正常连接,出现Need repair状态。
- 备DN进程故障重启,出现Need repair状态。
- 处理方法
步骤 1 登录故障DN节点,切换至Ruby用户,查询集群状态,确认分片是否满足多数派。
su - Ruby
cm_ctl query -Cvd

如上图,第一个DN分片不满足多数派。
查询集群状态,分片内无主,不满足多数派,联系华为技术支持。
查询集群状态,分片有主,分片内主+备DN数量小于分片内DN总数的一半,不满足多数派,参考12 DN故障-多数派故障章节处理。
查询集群状态,分片有主,分片内主+备DN数量大于分片内DN总数的一半,继续步骤2。
步骤 2 登录Need repair状态备DN节点,排查备DN进程是否重启。
ps ux | grep 'gaussdb --datanode'|grep -v grep

上图表明,dn_6008进程在10:30分启动。
若有过重启,参考6 DN组件状态Normal-告警原因分析章节,排查DN重启原因。
若无重启,继续步骤3。
步骤 3 当前节点查看DN日志,搜索terminating walreceiver due to heartbeat timeout关键词。
如能搜索到对应时间点的日志,表明备DN与主DN发生过断连,继续步骤4。
cd $GAUSSLOG/pg_log
grep 'terminating walreceiver due to heartbeat timeout' *

如上图,表明备DN无法正常接收主DN的日志。
步骤 4 登录当前分片的主DN节点,排查主DN 进程是否有重启。
ps ux | grep dn|grep -v grep

上图表明,dn_6008进程在10:30分启动。
若有过重启,参考6 DN组件状态Normal-告警原因分析章节,排查DN重启原因。
若无重启,继续步骤5。
步骤 5 排查当前DN分片是否有主备切换,可在新主DN的cm_agent日志中搜索关键词failover msg from cm_server。
若存在,表明是由cm_server仲裁主备切换。
若不存在,继续步骤6。

步骤 6 确认主DN节点和备DN节点之间网络是否正常,可分别在主备DN节点执行ping命令,注意需使用主备节点对等的IP。
ping -I 出口IP 目的IP
说明:
IP通过cm_ctl query -Cvd查询获取,HCS及公有云环境也可通过DBS运维管理平台实例明细界面获取。
步骤 7 若以上均不涉及,联系华为技术支持。
- 点赞
- 收藏
- 关注作者
评论(0)