前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPDB - FTS机制 - FTS进程启动

GPDB - FTS机制 - FTS进程启动

作者头像
yzsDBA
发布2023-12-19 17:04:07
1530
发布2023-12-19 17:04:07
举报

GPDB - FTS机制 - FTS进程启动

作为GreenPlum高可用的核心功能,FTS(Fault Tolerance Server)进程负责故障检测。该进程是master上的一个子进程,可以快速检测到primary或者mirror是否宕机,并及时让primary/mirror进行故障切换。如果fts挂掉了,master还会再重新fork出一个。本文说说FTS进程是怎么启动的。

1、FTS进程的启动

FTS进程的入口函数是FtsProbMain。该进程是如何启动的呢?

1)服务启动后,会先开启一个startup进程,即恢复进程,通过StartupXLog回放WAL日志,可以看到当日志回放完退出StartupXLog函数后,会进程proc_exit函数,退出当前进程。

2)需要注意,proc_exit函数最终会调用exit函数,该函数会向主进程发送SIGCHLD(17)信号。这也是代码中发现不了发送SIGCHLD信号代码的原因。

3)主进程PostmasterMain最开始会注册SIGCHLD信号处理函数reaper

4)reaper函数中通过LookupBackgroundWorkerFunction找到FTS进程入口FtsProbeMain,进入FTS主进程。

如何确定仅master节点才能加载FTS进程呢?

1)PostmasterMain函数调用process_shared_preload_libraries函数前,会调用load_auxiliary_libraries函数注册后台进程。

2)可以看到需要满足启动规则才会注册到BackgroundWorkerList

3)FTS的启动规则是Gp_role为GP_ROLE_DISPATCH,即master端

这样,结合第一个逻辑图,PostmasterMain->reaper函数从BackgroundWorkerList中取需要启动的进程进行启动,完成FTS的进程启动。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、FTS进程的启动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档