签到成功

知道了

CNDBA社区CNDBA社区

PostgreSQL Patroni 处理流程图

2024-01-17 17:51 268 0 转载 PostgreSQL
作者: dave

1. Patroni处理流程图

2. Patroni处理流程图分析

patroni处理流程图主要包括如下几个模块。

2.1 run_cycle 模块

patroni处理流程图的主模块。http://www.cndba.cn/dave/article/131502

http://www.cndba.cn/dave/article/131502

主模块可能调用 Node bootstrap模块、process_health_cluster模块、process_unhealth_cluster模块。http://www.cndba.cn/dave/article/131502

2.2 Node bootstrap 模块

描述了Patroni的初始化逻辑,通过判断$PGDATA目录是否为空触发,如果$PGDATA目录为空进入Node bootstrap处理模块。http://www.cndba.cn/dave/article/131502

Node bootstrap处理模块主要分两条线路走:http://www.cndba.cn/dave/article/131502

  1. 如果是leader节点,通过initdb初始化数据库,之后在dcs中持久化节点状态。
  2. 如果不是leader节点,则通过pg_basebackup或其它备份恢复命令部署一个备节点,之后在dcs中持久化节点状态。

2.3 process_health_cluster 模块

描述了Patroni集群健康时的处理逻辑,通过判断Patroni集群是否存在leader节点判断。http://www.cndba.cn/dave/article/131502

此模块主要分三条线路走:http://www.cndba.cn/dave/article/131502http://www.cndba.cn/dave/article/131502

  1. 如果不是leader节点,follow leader节点,之后在dcs中持久化节点状态。
  2. 如果是leader节点,并且数据库为master,在dcs中持久化节点状态。
  3. 如果是leader节点,并且数据库为slave,promote从库为主库,之后在dcs中持久化节点状态。

2.4 process_unhealth_cluster 模块

描述了Patroni集群不健康时的处理逻辑,通过判断Patroni集群是否存在leader节点判断。http://www.cndba.cn/dave/article/131502

此模块主要分三条线路走:

http://www.cndba.cn/dave/article/131502

  1. 如果不是最健康的节点,follow其它节点,之后在dcs中持久化节点状态。
  2. 如果是最健康的节点,若成功获得leader锁并且数据库为 master,之后在dcs中持久化节点状态。
  3. 如果是最健康的节点,若获得leader锁失败并且数据库为slave,promote从库为主库,之后在dcs中持久化节点状态。

2.5 根据以上处理流程图,相应场景流程如下:

  1. 关闭备库实例,备库能够自动拉起,走的是 process_health_cluster 处理逻辑。
  2. 关闭主库实例,主库能够自动拉起,走的也是 process_health_cluster 处理逻辑。
  3. 停主库主机,触发主备切换,走的是 process_unhealth_cluster 处理逻辑。
用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2237
    原创
  • 3
    翻译
  • 546
    转载
  • 186
    评论
  • 访问:6598443次
  • 积分:4242
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ