PostgreSQL 的高可用,还可以用简单的扩展搞定?

2024年 5月 29日 85.2k 0

pg_auto_failover 是一个 PostgreSQL 的扩展,用于对 PostgreSQL 集群进行监控和故障转移。它在简单性和正确性方面进行了优化。

pg_auto_failover 支持多种 PostgreSQL 部署架构,可为您的 PostgreSQL 服务实现安全的自动故障转移。可以只使用两个数据节点来开始,监控器会赋予它们主节点和辅助节点的角色。

单备架构

PostgreSQL 的高可用,还可以用简单的扩展搞定?-1带有一个主节点和备节点的 pg_auto_failover 架构

pg_auto_failover 可为您的 PostgreSQL 服务实现业务连续性。pg_auto_failover 使用具有自动故障转移功能的多个节点,来组成单个 PostgreSQL 服务,并自动执行 PostgreSQL 维护操作,以保证其用户和应用程序的服务可用性。

为此,对每个 PostgreSQL 服务 pg_auto_failover 会使用三个节点(机器、服务器):

• 一个 PostgreSQL 主节点,

• 一个 PostgreSQL 辅助节点,使用同步复制的热备模式,

• 一个 pg_auto_failover 监控器节点,它既充当见证方,又充当处理流程的协调者。

pg_auto_failover 监控器实现了一个状态机,并基于 PostgreSQL 内置功能来提供 HA。比如当检测到辅助节点不可用时,或者报告的延迟超过定义的阈值(默认值为 1 个 WAL 文件或 16 MB,请参见 pg_auto_failover 监控器上的 GUC 参数pgautofailover.promote_wal_log_threshold)时,监控器将从主节点上的 synchronous_standby_names 设置中删除它。在辅助服务器恢复到正常状态之前,不允许进行故障切换和主动切换操作,以防止数据丢失。

pg_auto_failover 由以下部分组成:

• 名为pgautofailover的 PostgreSQL 扩展

• 用来操作 pg_auto_failover 监控器的 PostgreSQL 服务

• 用来操作 PostgreSQL 实例的 pg_auto_failover 守护者,参见 pg_autoctl run

PostgreSQL 的高可用,还可以用简单的扩展搞定?-2带有一个主节点和两个备节点的 pg_auto_failover 架构

在图中的架构中,pg_auto_failover 使用具有自动故障转移和数据冗余功能的多个节点,来组成单个 PostgreSQL 服务,以实现业务连续性和数据可用性。即使在生产系统中失去任何 PostgreSQL 节点后,此架构也会在两个不同的节点上维护两个数据副本。

当使用多个备节点时,可以使用 pg_auto_failover 实现不同的架构,具体取决于生产设置所需的目标和权衡。

三备节点(1 个异步)的多备架构

PostgreSQL 的高可用,还可以用简单的扩展搞定?-3

设置上面的三个参数时,可以根据您的生产需要,设计各种不同的 PostgreSQL 架构。

在这种情况下,系统设置了两个备节点参与复制仲裁,以允许number_sync_standbys = 1 。系统始终至少维护了数据集的两个副本:一个在主节点上,另一个在节点 B 或节点 C 上。每当我们失去其中一个节点时,我们可以保证数据集有两个副本。

除此之外,我们还有备用服务器 D,它被设置为不参与复制仲裁。节点 D 将不会出现在节点的synchronous_standby_names列表中。此外,节点 D 使用candidate-priority = 0设置为,永远不会成为故障转移的候选者。

此架构适用于节点 A、B 和 C 部署在同一个数据中心或可用区,而节点 D 部署在另一个数据中心或可用区的场景。这三个节点的设置是为了支持生产环境的主要访问请求,并实现了 PostgreSQL 服务和数据集的高可用。

节点 D 也可以用来实现业务连续性,以防第一个数据中心异常,或者也可以用在部署另一个应用程序域上进行报告分析的需要。

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论