跳转到主要内容

【PostgreSQL架构】PostgreSQL的最佳PG群集高可用性(HA)解决方案

5星评论
Average: 5 (1 vote)
Last modified
星期二, 一月 4, 2022 - 08:35

如果您的系统依赖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创建我们的高可用性环境,但是您必须注意以下几点:

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

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

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

原文:https://severalnines.com/database-blog/top-pg-clustering-high-availability-ha-solutions-postgresql

本文:http://jiagoushi.pro/top-pg-clustering-high-availability-ha-solutions-postgresql

讨论:请加入知识星球或者微信圈子【首席架构师圈】

Article

标签(Tags)

企业架构(35) 数据分析(35) Power BI(32) 微服务(31) 微服务架构(30) Data Analysis(30) 商务智能(30) BI(30) 认证考试(30) 微软认证(30) DA-100(28) 应用安全(27) 考试题(26) 物联网(25) 敏捷(25) Enterprise Architecture(24) 试题(20) 首席架构师(19) 首席架构师推荐(19) 云计算(19) 网络安全(18) 技术架构(17) 机器学习(17) 试卷(17) SAFe(16) 大数据(15) Kafka(15) 规模化敏捷(14) enterprise security architecture(14) 企业安全架构(14) 前端架构(14) microservice(13) 业务架构(13) 数据架构(13) IOT(13) 安全运营(13) 容器云(12) 敏捷建模(12) 服务网格(12) 数据分析师(12) 事件驱动架构(12) 区块链(12) 数据安全(12) 数据湖(11) 应用架构(10) AWS(10) 数据科学(10) 人工智能(10) Kubernetes(10) 产品管理(9) BI数据分析师(9) NGINX(9) 数字化转型(9) 深度学习(9) 软件架构(9) 架构师(9) machine learning(9) 商务智能分析师(8) CIO(8) 技术选型(8) 安全战略(8) 软件测试(8) ArchiMate(8) PostgreSQL(8) Azure(8) Cloud Computing(8) Big Data(8) API(8) MSA(8) MDM(8) 技术趋势(7) 容器云架构(7) 核心实践(7) 无服务器架构(7) JavaScript框架(7) Vue(7) React(7) 参考架构(7) DevOps(7) 数据仓库(7) Data Lake(7) Envoy architecture(7) 容器(7) 主数据架构(7) microservices(7) 技术架构师(7) digital transformation(7) 投资组合管理(6) 安全架构(6) 集成架构(6) 合同测试(6) 工控协议(6) ICS(6) Micro Service Architecture(6) Envoy架构(6) 事件驱动(6) 数字化(6) 微服务架构师(6) strategy(6) 安全工具(6) application security principle(6) Angular(6) Postgresql架构(6) 网络架构(6) agilemodeling(6) 首席架构师精选(6) 高管洞察与创新(6) 云安全(6) 合约测试(5) Event Hub(5) 应用安全原则(5) Enterprise Portfolio Management(5) WAF(5) 编程语言(5) JavaScript Frameworks(5) 用户体验(5) 云原生(5) Agile(5) Python(5) IT战略(5) 企业敏捷性(5) 数字化业务(5) API Gateway(5) 项目管理(5) Digital business(5) 工业控制系统(5) Microservice Architecture(5) ICP(5) 软件架构师(5) 数据挖掘(5) Data Architecture(5) 主数据管理(5) 性能(5) Architecture Overview(5) Best Practices(5) Data Warehouse(5) k8s(5) 战略(5) IoT(5) 解决方案(5) 工业物联网(5) 数据科学家(5) 敏捷数据(4) 领导力(4) IPS(4) 领域驱动设计(4) DDD(4) 性能调优(4) 微前端(4) Vue.js(4) Docker(4) 敏捷核心实践(4) 应用组合管理(4) Agile Core Practice(4) 程序员(4) 数据可视化(4) 前端开发(4) 前端架构师(4) 前端开发工程师(4) 容器云架构师(4) 职业发展(4) executive insights and innovation(4) enterprise agility(4) 数据湖架构师(4) 开源合规(4) 敏捷模型(4) 业务转型(4) 企业微服务架构(4) 消费者驱动的合同测试(4) JWT(4) security(4) 企业架构师(4) architecture(4) 应用架构师(4) blockchain(4) 存储架构(4) GDPR(4) Cloud(4) RESTful(4) 最佳实践(4) 分布式计算(4) 数据湖架构(4) Service Mesh(4) BDD(4) 解决方案架构师(4) Event-Driven(4) SCADA(4) 云原生架构(4) 去中心化(4) IoT(4) IoT(4) Deep Learning(4) EA(3) technology(3) NFR(3) 安全(3) 应用现代化(3) Big Data(3) Spark(3) Microservice(3)