暂无图片
greenplum节点宕机,pg_stat_activity卡了一堆进程杀不掉
我来答
分享
잘생긴 오빠😎
2024-01-14
greenplum节点宕机,pg_stat_activity卡了一堆进程杀不掉

背景:sdw11primary宕机,目前已执行恢复命令,在同步xlog。
pg_stat_activity从13号晚上23点卡到第二天,一堆进程select pg_terminate_backend(pid int);杀不掉。

早上8点多另一个节点sdw12上的primary报超出内存也挂了。


目前问题:1.卡的那一堆进程如何杀掉?
                 2.是否可以开始sdw12的恢复?

现有情况:1.目前卡住的进程通过查询进程句柄发现都在master节点上。


2.卡住无法杀掉的进程截图:




我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
잘생긴 오빠😎

补充下sql进程:(打马赛克的都是master节点)


暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
잘생긴 오빠😎
升级问题到: 紧急故障
暂无图片 评论
暂无图片 有用 0
打赏 0
陈陈

首先,您可以使用gpstate工具检查集群中所有节点的状态。执行gpstate -e可以查看是否有segment节点处于down状态,如果有,这将帮助您确定是否有节点因为宕机而导致数据库无法正常运作。

接下来,您需要分析日志文件来确定宕机的原因。Greenplum的日志文件通常位于$MASTER_DATA_DIRECTORY/pg_log目录下,您可以通过查看这里的日志来获取错误信息和警告。此外,您还可以使用gpssh工具登录到所有服务器检查postgres进程数,确认是否还有进程在运行。

如果发现有大量进程卡在pg_stat_activity中,您可以直接通过ps命令结合grep查找相关进程,并使用kill命令配合进程ID(PID)来结束这些进程。不过,请确保这样做不会影响到数据库的正常恢复流程。

如果节点宕机是由于硬件故障,您可能需要重启服务器,并使用gprecoverseg工具来恢复失败的segment实例。在执行gprecoverseg之前,请确保已经收集了足够的日志信息,这些信息将帮助您在恢复过程中诊断和解决问题。

记得在进行任何操作之前备份重要数据,以防恢复过程中出现意外导致数据丢失。

暂无图片 评论
暂无图片 有用 0
打赏 0
잘생긴 오빠😎
题主
2024-01-17
pg_log中没有fatal或者panic日志。至于你说的kill命令,我不清楚是否是百度出来或者凭经验判断的。我曾经用kill命令杀过进程,本来正常的节点,直接数据库进入恢复模式,连psql都进不去,然后节点宕机,过了半个多小时才可以连接。 其次,后半段有关重启或者gprecoverseg恢复,可问题是我已经在恢复中了,可能我的问题背景描述不太清楚?
잘생긴 오빠😎

问题已解决,根据pid查找后台进程,是在等待已经恢复的mirror的seg,停掉mirror后,死锁进程自动释放。然后恢复primary,最后再恢复mirror就可以了。 

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏