功能概述

原生 PostgreSQL 流复制原理为备库不断从主库同步数据,并在备库应用每个 Wal 日志记录。PostgreSQL 高可用版-V2.0.0 在 AppCenter 集群管理控制台支持变更主备库的数据同步模式,并定制 半同步复制 可自动切换同步流模式,确保业务运行流畅性。

同步模式

支持 异步流复制同步流复制 以及 半同步复制 模式。

  • 异步流复制

    异步留复制指主库在执行完事务后,立即返回结果,未判断备库是否接收和处理事务。在主库异常,而备库未接收到数据,强行主从切换后,可能造成数据丢失。

  • 同步流复制

    同步流复制指当主库执行完一个事务,且所有备库执行完事务后,才返回结果。若有多个备库,需要等待所有备库执行完事务才返回,保障数据完全同步,数据零丢失。

    同步流复制模式下,若备库异常无法完成数据同步,将导致主库事务受阻,故该模式对业务正常运行有一定影响。

  • 半同步复制

    PostgreSQL 半同步复制指在开启 同步流复制 的前提下,从节点异常无法完成数据同步时,主库将自动切换为异步流复制模式,确保业务不受阻塞。备库恢复正常后,主库恢复同步流复制。

    说明

    PostgreSQL 同步流复制中备库是指 standby 节点。

适用场景

PostgreSQL 集群 主实例只读实例 支持数据同步模式稍有区别。

  • 主实例 支持半同步模式

    • 对于 2 个主实例的集群,使用半同步模式,允许一个节点故障,不会影响 Primary 节点的读写,但此时集群无法执行故障转移。

    • 对于 3 个主实例的集群,则是增强半同步模式。允许一个节点宕机,但为了保证数据的强一致性,当两节点宕机时,会阻塞 Primary 节点的写入,此时集群为 只读。企业云平台建议使用 3 节点的主实例集群。

  • 只读实例 可以设置同步或异步模式,用户可通过参数控制只读实例的同步模式。

操作步骤

根据需求,修改配置集群配置参数 synchronous_readonlyfsync。详细操作参考如何修改配置参数

参数配置说明如下。

参数 说明

synchronous_readonly

用于控制 只读实例 的同步模式。

  • 默认值为 async 表示异步模式,先写入内存,后写入硬盘。企业云平台建议只读实例集群设置为 async

  • sync 表示同步模式,同步写入内存和硬盘。

fsync

设置为 true

  • true 表示同步模式。

  • false 表示异步模式。