【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【PostgreSQL架构】PostgreSQL的最佳群集高可用性方案

如果您的系统依赖PostgreSQL数据库并且您正在寻找HA的集群解决方案,我们希望提前告知您这是一项复杂的任务,但并非不可能实现。

我们将讨论一些解决方案,您可以从中选择对您的容错要求。

PostgreSQL本身不支持任何多主群集解决方案,例如MySQL或Oracle。尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如PostgreSQL的复制或负载平衡。

首先,让我们回顾一些基本概念:

什么是高可用性?

它是服务可用的时间量,通常由企业定义。

冗余是高可用性的基础;万一发生事故,我们可以继续毫无问题地运转。

持续恢复

如果发生事件,则必须还原备份,然后应用wal日志;恢复时间将非常长,我们不会谈论高可用性。

但是,如果我们将备份和日志存档在应急服务器中,则可以在日志到达时应用它们。

如果日志每隔1分钟发送和应用一次,则应急基础将处于连续恢复状态,并且到生产的时间最多为1分钟。

备用数据库

备用数据库的想法是保留生产数据库的副本,该副本始终具有相同的数据,并且可以在发生事件时使用。

有几种方法可以对备用数据库进行分类:

根据复制的性质:

  • 物理备用数据库:复制磁盘块。
  • 逻辑备用数据库:流式传输数据更改。

通过事务的同步性:

  • 异步:可能会丢失数据。
  • 同步:不会丢失数据;主服务器中的提交等待备用服务器的响应。

通过用法:

  • 热备用:它们不支持连接。
  • 热备用:支持只读连接。



集群

群集是一组一起工作的主机,被视为一个主机。

这提供了一种实现水平可伸缩性的方法,并提供了通过添加服务器来处理更多工作的能力。

它可以抵抗节点的故障并继续透明地工作。

根据共享的内容,有两种模型:


  • 共享存储:所有节点都使用相同的信息访问相同的存储。
  • 不共享:每个节点都有自己的存储,取决于我们系统的结构,该存储可能与其他节点具有相同的信息。

现在让我们回顾一下PostgreSQL中的一些集群选项。

分布式复制块设备 (Distributed Replicated Block Device)

DRBD是一个Linux内核模块,可使用网络实现同步块复制。它实际上不实现群集,也不处理故障转移或监视。为此,您需要补充软件,例如Corosync + Pacemaker + DRBD。


例:

  • Corosync:处理主机之间的消息。
  • Pacemaker:启动和停止服务,确保它们仅在一台主机上运行。
  • DRBD:在块设备级别同步数据。


集群控制(ClusterControl)

ClusterControl是用于数据库集群的无代理管理和自动化软件。它可直接从其用户界面帮助部署,监视,管理和扩展数据库服务器/集群。

ClusterControl能够处理维护数据库服务器或群集所需的大多数管理任务。


使用ClusterControl,您可以:

  • 在您选择的技术堆栈上部署独立的,复制的或群集的数据库。
  • 跨多语言数据库和动态基础架构统一自动化故障转移,恢复和日常任务。
  • 您可以创建完整或增量备份并计划它们。
  • 对整个数据库和服务器基础结构进行统一和全面的实时监控。
  • 只需一个操作即可轻松添加或删除节点。

在PostgreSQL上,如果发生事件,可以自动将您的从属提升为主状态。

它是一个非常完整的工具,带有免费的社区版本(还包括免费的企业试用版)。



红宝石 (Rubyrep)

异步,多主机,多平台复制(在Ruby或JRuby中实现)和多DBMS(MySQL或PostgreSQL)的解决方案。

基于触发器,它不支持DDL,用户或授权。

使用和管理的简单性是其主要目标。

一些功能:

  • 配置简单
  • 安装简单
  • 平台独立,表格设计独立。

Pgpool II

它是一种在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件。

一些功能:

  • 连接池
  • 复写
  • 负载均衡
  • 自动故障转移
  • 并行查询


Bucardo

基于行的异步级联主从复制,使用触发器在数据库中排队;基于行的异步主-主复制,基于行,使用触发器和自定义冲突解决方案。

Bucardo需要专用的数据库并作为Perl守护程序运行,该守护程序与此数据库以及复制中涉及的所有其他数据库进行通信。它可以作为多主机或多从机运行。

主从复制涉及到一个或多个目标的一个或多个源。源必须是PostgreSQL,但是目标可以是PostgreSQL,MySQL,Redis,Oracle,MariaDB,SQLite或MongoDB。

一些功能:

  1. 负载均衡
  2. 从站不受限制,可以写
  3. 部分复制
  4. 按需复制(更改可以自动或在需要时推送)
  5. 从站可以“预热”以快速设置

缺点:

  • 无法处理DDL
  • 无法处理大物件
  • 没有唯一键无法增量复制表
  • 不适用于Postgres 8之前的版本

Postgres-XC

Postgres-XC是一个开源项目,旨在提供可写扩展,同步,对称和透明的PostgreSQL集群解决方案。它是紧密耦合的数据库组件的集合,可以将其安装在多个硬件或虚拟机中。

写可伸缩性意味着Postgres-XC可以配置任意数量的数据库服务器,并且与单个数据库服务器相比,可以处理更多的写操作(更新SQL语句)。

您可以有多个客户端连接到的数据库服务器,该服务器提供数据库的单个一致的群集范围视图。

来自任何数据库服务器的任何数据库更新对于在不同主服务器上运行的任何其他事务都是立即可见的。

透明意味着您不必担心内部如何将数据存储在多个数据库服务器中。

您可以配置Postgres-XC在多个服务器上运行。您为每个表选择的数据以分布式方式存储,即分区或复制。发出查询时,Postgres-XC会确定目标数据的存储位置,并向包含目标数据的服务器发出相应的查询。


Citus

Citus用内置的高可用性功能(例如自动分片和复制)替代了PostgreSQL。Citus分片将您的数据库分片,并在整个商品节点集群中复制每个分片的多个副本。如果群集中的任何节点不可用,Citus会将所有写入或查询透明地重定向到其他一个包含受影响的分片副本的节点。

一些功能:

  • 自动逻辑分片
  • 内置复制
  • 用于灾难恢复的数据中心感知复制
  • 具有高级负载平衡功能的中查询容错

您可以增加由PostgreSQL支持的实时应用程序的正常运行时间,并最大程度地减少硬件故障对性能的影响。您可以使用内置的高可用性工具来实现此目标,从而最大程度地减少成本高昂且易于出错的手动干预。

PostgresXL

它是一种无共享的多主群集解决方案,可以透明地在一组节点上分配表,并并行执行这些节点的查询。它具有一个称为全局事务管理器(GTM)的附加组件,用于提供群集的全局一致视图。该项目基于PostgreSQL 9.5版本。一些公司,例如2ndQuadrant,为该产品提供商业支持。

PostgresXL是可水平扩展的开源SQL数据库集群,具有足够的灵活性来处理各种数据库工作负载:

  • OLTP写密集型工作负载
  • 需要MPP并行性的商业智能
  • 运营数据存储
  • 键值存储
  • GIS地理空间
  • 混合工作负载环境
  • 多租户提供商托管环境

组件:

  • 全局事务监视器(GTM):全局事务监视器确保群集范围内的事务一致性。
  • 协调器:协调器管理用户会话并与GTM和数据节点进行交互。
  • 数据节点:数据节点是存储实际数据的位置。

结论

还有许多其他产品可以为PostgreSQL创建我们的高可用性环境,但是您必须注意以下几点:

  • 新产品,未经充分测试
  • 停产项目
  • 局限性
  • 许可费用
  • 非常复杂的实现
  • 不安全的解决方案

您还必须考虑您的基础架构。如果只有一台应用程序服务器,那么无论您配置了多少数据库的高可用性,如果应用程序服务器发生故障,则将无法访问。您必须很好地分析基础架构中的单点故障,并尝试解决它们。

考虑到这些要点,您可以找到一种适合您的需求和要求的解决方案,而不会产生麻烦,并且能够实施您的高可用性群集解决方案。来吧,祝你好运!

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
1月前
|
存储 SQL 关系型数据库
Mysql高可用架构方案
本文阐述了Mysql高可用架构方案,介绍了 主从模式,MHA模式,MMM模式,MGR模式 方案的实现方式,没有哪个方案是完美的,开发人员在选择何种方案应用到项目中也没有标准答案,合适的才是最好的。
163 3
Mysql高可用架构方案
|
3月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
1天前
|
NoSQL 决策智能 数据库
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
本项目旨在解决智能体的“超级入口”问题,通过开发基于意图识别的多智能体框架,实现用户通过单一交互入口使用所有智能体。项目依托阿里开源的Qwen2.5大模型,利用其强大的FunctionCall能力,精准识别用户意图并调用相应智能体。 核心功能包括: - 意图识别:基于Qwen2.5的大模型方法调用能力,准确识别用户意图。 - 业务调用中心:解耦框架与业务逻辑,集中处理业务方法调用,提升系统灵活性。 - 会话管理:支持连续对话,保存用户会话历史,确保上下文连贯性。 - 流式返回:支持打字机效果的流式返回,增强用户体验。 感谢Qwen2.5系列大模型的支持,使项目得以顺利实施。
96 4
使用Qwen2.5+SpringBoot+SpringAI+SpringWebFlux的基于意图识别的多智能体架构方案
|
22天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
1月前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
7天前
|
弹性计算 负载均衡 安全
云端问道-Web应用上云经典架构方案教学
本文介绍了企业业务上云的经典架构设计,涵盖用户业务现状及挑战、阿里云业务托管架构设计、方案选型配置及业务初期低门槛使用等内容。通过详细分析现有架构的问题,提出了高可用、安全、可扩展的解决方案,并提供了按量付费的低成本选项,帮助企业在业务初期顺利上云。
|
7天前
|
弹性计算 负载均衡 安全
企业业务上云经典架构方案整体介绍
本次课程由阿里云产品经理晋侨分享,主题为企业业务上云经典架构。内容涵盖用户业务架构现状及挑战、阿里云业务托管经典架构设计、方案涉及的产品选型配置,以及业务初期如何低门槛使用。课程详细介绍了企业业务上云的全流程,帮助用户实现高可用、稳定、可扩展的云架构。
|
1月前
|
运维 监控 测试技术
如何确保微服务架构的高可用性?
如何确保微服务架构的高可用性?
56 2
|
2月前
|
存储 缓存 NoSQL
分布式架构下 Session 共享的方案
【10月更文挑战第15天】在实际应用中,需要根据具体的业务需求、系统架构和性能要求等因素,选择合适的 Session 共享方案。同时,还需要不断地进行优化和调整,以确保系统的稳定性和可靠性。
|
3月前
|
存储 弹性计算 SDN
企业级 ECS 集群的构建需要综合考虑多个因素,通过不断的比较和对比不同的方案,选择最适合企业自身需求和发展的架构。
【9月更文挑战第5天】在数字化商业环境中,构建企业级ECS(弹性计算服务)集群对提升业务稳定性、扩展性和性能至关重要。本文将比较传统物理服务器与ECS架构,分析云服务商选择(如AWS和阿里云)、实例配置(CPU/内存)、网络架构(SDN vs 传统)及存储方案(本地存储 vs 云存储),帮助企业根据自身需求选出最优方案,实现高效稳定的ECS集群部署。
79 18