GaussDB CN 服务异常实例分析
本文分享自华为云社区《【实例状态】GaussDB CN服务异常》,作者:酷哥。
确认节点状态
先通过 OPS 确认节点状态是否已经恢复,或登录后台执行 cm_ctl query -Cv 确认集群是否已经 Normal。如果状态已经为 normal,表明故障已经恢复,集群正常,不再影响业务。 确认是否需要分析故障的具体原因,如果需要,继续向下跟随文档进行分析 首先确认是否是底层故障如虚拟机故障、网络故障、存储故障,排除底层故障后再继续定位。
定位导图总览
CN 进程 normal
问题现象
cm_ctl query -Cvd 查询集群状态,告警 CN 显示 normal。
问题分析与定界
step1.登录告警 CN 节点,su 进入集群用户,ps ux | grep 'gaussdb --coordinator',查看 CN 进程启动时间,确认 CN 是否重启,如果没有重启参考处理方法一(结束),若重启则跳至 step2
step2. cd $GAUSSLOG/cm/cm_agent
step3. 打开对应时间点的 vi cm_agent-*.log
step4.查看日志中对应时间点是否含有关键词 cn restart,如果同时有 process (gaussdb 17391) is T (STOPPED) 类似日志,说明进程 hang 住了,跳至 step6
step5.若日志中没有 cn restart 关键词,查看日志中对应时间点是否含有关键词 CN START.有则跳至 step10
step6.登录到 CMS 主节点 cd $GAUSSLOG/cm/cm_server
step7.打开对应时间点的 cm_server*.log
step8.查看日志中对应时间点是否含有关键词 restart %u, there is not report msg for %d sec. 如果有,则 CN 重启原因为心跳超时,参考处理步骤方法一(结束 )
step9.查看日志中对应时间点是否含有关键词 phony dead times (%d) already exceeded, will restart...则 CN 重启原因为进程僵死,参考处理步骤方法一(结束)
step10.cd $GAUSSLOG/cm/cm_agent,打开对应时间点的 system_call-*.log,查看对应时间点是否有关键词 can not bind ip,如果没有则跳至 step12
step11.如果有关键词 can not bind ip,则 CN 重启原因为 CN IP 丢失,参考处理步骤方法二 (结束)
step12.cd $GAUSSLOG/pg_log/cn_XX
step13.查看相关 postgresql_xxx.log, 查看相关时间点是否有关键词 PANIC,如果有则原因为 core,参考处理步骤方法一。
step14.查看 CN 数据目录下是否有 core 生成,如果有则原因为 core,参考处理步骤方法一。
step15.查看 $GAUSSLOG/ffic_log 日志,查看对应时间点是否有打印日志,如果有则原因为 core,参考处理步骤方法一。
处理步骤
方法一:联系华为工程师进行定位
方法二:检查故障节点虚拟 IP,浮动 IP。如有问题,请排查管控 HA 是否关闭。
CN 进程 down
问题现象
cm_ctl query -Cvd 查询集群状态,告警 CN 显示 down。
问题分析与定界
step1. cd $GAUSSLOG/cm/cm_agent
step2.打开对应时间点的 cm_agent-*.log
step3.查看日志中对应时间点是否含有关键词 cn_disk_damage=1,如果有,则原因为数据/日志磁盘损坏或磁盘满,参考处理步骤方法一。
step4.查看日志中对应时间点是否含有关键词 port_conflict=1,如果有,则原因为端口冲突,参考处理步骤方法二。
step5.查看日志中对应时间点是否含有关键词 cn_nic_down=1,如果有,则原因为网卡故障,参考处理步骤方法三。
step6.查看日志中对应时间点是否含有关键词 cn_manual_stop=1,如果有,则原因为手动停止,参考处理步骤方法四。
处理步骤
方法一:查看对应故障 cn 的磁盘是否有故障,如无故障则检查是否磁盘满。
方法二:lsof -i:端口号,查看端口占用进程,联系华为工程师定位处理
方法三:联系 I 层查看是否存在网卡故障
方法四:查看是否有人手动停止
CN 进程 deleted
问题现象
cm_ctl query -Cvd 查询集群状态,告警 CN 显示 deleted。
问题分析与定界
step1.确认当时时间故障 CN 所在节点是否正常,是否主机故障,重启、掉电,断网等,参考处理步骤方法一。
step2.登入 CMS 主节点,cd $GAUSSLOG/cm/cm_server,打开对应时间点的 cm_server*.log
step3.如果日志中有关键词 isCnDnDisconnected=1, 则原因为 CN 与所有主 DN 断连,参考处理步骤方法二。
step4.如果日志中有关键词 cn_down_to_delete=1,则原因为 CNdown 导致,参考处理步骤方法三。
step5.如果日志中有关键词 cn instance restarts within ten minutes is more than,则原因为 CN 进行重启 导致,参考处理步骤方法四。
处理步骤
方法一:联系 I 层查看主机故障原因,排除故障后,在管控点击节点修复修复 cn 节点。
方法二:在管控点击[节点修复]修复 cn 节点,联系华为工程师处理
方法三:在管控点击[节点修复]修复 cn 节点,参考第二章 CN DOWN 进行定位
方法四:在管控点击[节点修复]修复 cn 节点,参考第一章 CN NORMAL 进行定位
CN 进程 readonly
问题现象
cm_ctl query -Cvd 查询集群状态,告警 CN 显示 readonly。
问题分析与定界
step1、登录到只读 CN 节点后,su - Ruby 进入 Ruby 用户, 执行/usr/sbin/chroot --userspec=Ruby:Ruby /var/chroot 进入沙箱,source /etc/profile 设置环境变量
step2、df -h 查看磁盘空间分配情况,cm_ctl query -Cvd 查看 CN 数据目录路径,确认所在磁盘空间使用率。
step3、登陆 cmserver 主节点,进入 cmserver 数据目录/var/chroot/usr/local/cm/cm_server,查看 cm_server.conf 配置文件,查看参数 datastorage_threshold_value_check 的值,当磁盘使用率超过该参数值时,CN 就会被设置为只读,避免磁盘被写满。比较 CN 磁盘使用率是否超过该参数值,如果是,则按照处理步骤 1 处理,如果否,则按照步骤 2 处理。
处理步骤
1、联系华为工程师,确定是否需要扩容或者删除同磁盘的无用文件
2、参考 CN 只读处理方法
版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/4fe0a117fe5e36128e6c46e78】。文章转载请联系作者。
评论