暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GreenPlum集群进入recovery的处理过程

IT那活儿 2024-09-13
359
点击上方“IT那活儿”公众号--专注于企业全栈运维技术分享,不管IT什么活儿,干就完了!!!   

问题现象

2024年2月某业务GP集群进入恢复模式,所有业务数据进入只读,无法写入。


问题处理

2.1 巡检发现GP进入恢复模式
2.2 使用 pgctl stop 命令方式
2.3 GP重启成功
检查数据库segment状态正常,但是psql登录不进去。
报错 psql:
FATAL: DTM initialization: failure during startup recovery, retry failed, check segment status
2.4 对GP数据库按应急流程进行第二次重启操作
检查数据库segment状态正常,但是psql任然登录不进去。
报错 psql:
FATAL: DTM initialization: failure during startup recovery, retry failed, check segment status

2.5 对GP数据库进行第三次重启操作(使用gpstop -M fast命令),GP库恢复正常


原因分析

3.1 进入恢复模式原因

可能是触发了BUG:

3.2 两次重启失败原因

首先,重启Master会让DTM服务重新初始化;
最初重启时使用Postgresql提供的pg_ctl 工具仅会重启master实例, 且是直接终止 Greenplum 数据库的主 Master 进程,而不会像 gpstop 命令那样执行优雅的停止过程,包括回滚当前进行的事务;
这时有一个segment上的postmaster服务进程没有被停止,导致DTM初始化失败;
虽然后续节点状态恢复正常,但DTM初始化阶段失败导致无法接受客户端连接请求;
后续使用 gpstop 命令优雅停止整个集群,DTM在master启动时初始化成功,集群功能恢复正常。
备注:使用 pg_ctl stop -D data1/master/gpseg-1 -m fast 停止master后,有一个segment上的进程仍在提供服务,导致重启时DTM初始化失败。
备注:重新使用 gpstop -M fast命令停止整个集群,然后用 gpstart -a 重启,没有再出现Postmaster进程未关闭的问题。

总 结:

切记使用:gpstop -M fast 命令以及 gpstart -a 命令去优雅地重启GreenPlum数据库的所有实例,避免重启后出现异常。

END


本文作者:唐田寿(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论