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

Patroni漫谈之流程说明

1032

按照Patroni官方给的流程图,可以将整个流程划分为:

1、节点启动流程

2、节点拉起流程

3、处理健康集群流程

4、处理不健康流程

①节点启动

步骤1.1:从DCS中加载集群信息

Ø 判断条件2.1:如果在DCS中已经注册了节点,那么执行判断条件2.2,如果没有注册,则执行步骤1.2

步骤1.2:在DCS中持久化节点信息

Ø 判读条件2.2:判读当前节点Postgresql的状态,如果是开始中、停止中、重新启动中以及重新初始化中,那么进入判断条件2.3,否则就进入判断条件2.4

Ø 判断条件2.3:判断该节点是否拥有领导者锁,如果拥有领导者锁,则执行步骤1.3,否则执行步骤1.4

步骤1.3:更新领导者锁

步骤1.4持久化节点状态到DCS

Ø 判断条件2.4:集群是否还原状态,并且失败了,如果是执行步骤1.5,否则执行判断条件2.5

步骤1.5: 如果当前节点是leader节点,则移除leader key

Ø 判断条件2.5:判断数据目录是否为空,如果是执行步骤1.6,否则执行判断条件2.6

步骤1.6:执行②节点拉起流程

Ø 判断条件2.6:集群信息在DCS中初始化,如果是则执行判断条件2.7,否则执行判断条件2.8

Ø 判断条件2.7:数据目录是否属于集群,如果是执行判断条件2.9,否则执行步骤1.7

Ø 判断条件2.8:集群是否有领导者,如果是执行判断条件2.9,否则执行步骤1.8

步骤1.7:节点启动失败并退出

Ø 判断条件2.9:节点是否健康状态(Postgresql运行中),如果是执行判断条件2.10,否则执行步骤1.9

步骤1.8:初始化一个新集群

步骤1.9:设置成只读节点及还原标志

Ø 判断条件2.10:集群是否有一个领导者,如果是执行③处理健康集群流程,否则执行处理不健康集群流程

②节点拉起

Ø 判断条件2.1:集群是否有一个领导者,如果是执行步骤1.1,否则执行判断条件2.2

步骤1.1:选择一个节点,并且获得备份,执行步骤1.2

步骤1.2:执行pg_basebackup还原备份

Ø 判断条件2.2:集群是否有一个初始键,如果是执行步骤1.3,否则执行步骤1.4

步骤1.3:等待一个leader key

步骤1.4:竞争初始键

Ø 判断条件2.3:判断是否赢得了竞争初始键,如果是执行步骤1.5,否则执行步骤1.6

步骤1.5:初始化数据库、运行Postgresql并且创建对应角色,执行判断条件2.4

步骤1.6:需要等待leader key

Ø 判断条件2.4:操作成功,执行步骤1.7,否则执行步骤1.8

步骤1.7:将leader key存储到DCS中,执行步骤1.9

步骤1.8:从DCS中移除初始化键,并且删除数据目录,执行步骤1.9

步骤1.9持久化节点状态到DCS

③处理健康集群

Ø 判断条件2.1:判断当前节点是否拥有领导者锁,如果是执行步骤1.1,否则执行步骤1.2

步骤1.1:尝试更新领导者锁,执行判断条件2.2

步骤1.2:跟随领导者

Ø 判断条件2.2:如果执行成功,则执行判断条件2.3,否则执行步骤1.3

Ø 判断条件2.3:当前节点是否作为主节点在运行,如果是执行步骤1.5,否则步骤1.4

步骤1.3:执行节点降级操作

步骤1.4:提升当前节点为主节点

步骤1.5持久化节点状态到DCS

④处理不健康集群

Ø 判断条件2.1:判断当前节点是否为健康状态,如果是执行步骤1.1,否则执行步骤1.2

步骤1.1:创建leader key

步骤1.2:尝试跟随其他节点

Ø 判断条件2.2:是否可以获得锁,如果可以执行判断条件2.3,否则执行步骤1.2

Ø 判断条件2.3:当前节点是否作为Postgresql主节点在运行,如果是执行步骤1.3,否则执行步骤1.4

步骤1.3持久化节点状态到DCS

步骤1.4:提升当前节点为主节点

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

评论