天天看点

Patroni Replication Modes

标准 PostgreSQL 异步流复制集群

默认情况下,Patroni 搭建的流复制集群中的所有 standy 节点都是异步流复制;主节点挂掉,选举新主节点时,会综合考量时间线等信息,选举一个最好的节点为新主;

备节点挂掉就挂掉了,不影响主节点的任何操作;

标准 PostgreSQL 同步流复制集群

给 Patroni 增加如下配置,从而间接给所有的 PostgreSQL 节点的 postgresql.conf 增加如下配置

synchronous_commit: "on"
synchronous_standby_names: "*"      

Patroni 自动处理此配置在所有的 replica 节点 的 postgresql.conf 生成对应的 primary_conninfo 和 primary_slot_name 配置,组建一个标准的同步流复制集群;这种情况下如果 primary and secondary 节点同时挂掉,第三个可能没有包含全部事务的节点被提升为主;

Patroni 增强版

Patroni 提供了synchronous_mode 配置一个增强版的集群;主要是为了避免上述没有包含全部事务的节点被提升为主的情况。synchronous_mode=on 时的表现为主节点挂掉时,不会自动选择新主节点,挂掉的主节点被修复重新上线之后,自动接着成为主节点。用户也可以在主节点挂掉时,人工判断之后,手工干预手动执行failover,为集群产生一个新的主节点。

在这种模式下,如果备节点挂掉,Patroni将会快速切换主节点为单机模式(去掉同步流复制配置);以不影响主节点对外提供服务。

Patroni 增强增强版