PostgreSQL 常用的高可用集群方案 理论型

前言

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。

主要功能:

负载均衡

从站不受限制,可以写

部分复制

按需复制(更改可以自动或在需要时推送)

从站可以“预热”以快速设置

缺点:

无法处理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和数据节点进行交互。

数据节点:数据节点是存储实际数据的位置。

结论

在决定选择那种方案我们都必须审视如下几个点:

新产品,未经充分测试

停产项目

局限性

许可费用

非常复杂的实现

不安全的解决方案

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PostgreSQL是一种开源的关系数据库管理系统,它支持高可用集群部署,可以提供数据的持久性和可用性。以下是关于PostgreSQL高可用集群的装指南简述: 1. 集群环境准备:首先需要准备一组具有相同操作系统和网络配置的物理或虚拟机。确保集群中的所有节点都可以互相通信。 2. 安装和配置PostgreSQL:在每个节点上安装PostgreSQL软件,并在配置文件中设置适当的参数。确保所有节点的配置文件保持一致。 3. 数据同步和复制:为实现高可用性,需要使用PostgreSQL内置的复制功能。使用流复制或逻辑复制将数据从主节点复制到备份节点。 4. 主备切换和故障恢复:在主节点发生故障时,需要手动或自动触发主备切换。保证备份节点可以接管主节点的功能,并尽快恢复服务。 5. 自动化监控和管理:为了更好地管理和监控集群,可以使用一些工具和脚本来自动化任务,例如监控节点状态、日志检查和备份。 6. 容灾和故障转移:为了应对更严重的故障,可以在不同的地理位置设置多个节点,以实现容灾和故障转移。在这种情况下,需要考虑数据同步的延迟和网络带宽等因素。 7. 安全性和权限管理:在配置高可用集群时,务必考虑数据的安全性。设置适当的访问权限并实施加密和身份验证措施。 总之,PostgreSQL高可用集群的装指南包括安装和配置PostgreSQL、数据同步和复制、主备切换和故障恢复、自动化监控和管理、容灾和故障转移以及安全性和权限管理等内容。通过合理地设置和管理,可以确保PostgreSQL数据库具备高可用性和可靠性。 ### 回答2: PostgreSQL是一个开源的关系数据库管理系统,它支持高可用集群配置,以确保数据库系统的可用性和容错性。以下是一个关于PostgreSQL高可用集群配置的装指南。 1.选择合适的架构:在配置PostgreSQL高可用集群之前,首先需要选择适合你的架构。常见的架构包括主-从复制、主-主复制和基于分布式数据库的架构。根据你的需求和资源预算选择适合的架构。 2.配置主-从复制:主-从复制是最简单和常见的PostgreSQL高可用架构。配置主-从复制需要设置一个主数据库和一个或多个从数据库。主数据库接收写入操作,并将更新传播给从数据库。配置主-从复制需要在主数据库和从数据库之间设置流复制。 3.配置主-主复制:主-主复制架构允许多个节点同时接收写入操作。这种架构可以提高系统的容错性和可用性。配置主-主复制需要设置多个相互同步的节点,并使用流复制来实现数据同步。需要注意的是,主-主复制可能导致数据冲突,因此需要进行一些额外的配置和管理。 4.配置自动故障转移:为了实现高可用性,当主节点遇到故障时,需要配置自动故障转移。自动故障转移可以自动将故障节点替换为备用节点,以确保数据库系统的连续性。可以使用软件工具或自定义脚本来实现自动故障转移。 5.监控和管理集群:为了确保高可用集群的稳定性和性能,需要定期监控和管理集群。可以使用PostgreSQL提供的监控工具,如pg_stat_replication和pg_stat_activity,来监控数据库状态和查询性能。另外,还可以使用第三方的监控工具来监控集群的运行状况。 以上是关于PostgreSQL高可用集群配置的一些基本指南。具体的配置方法和工具选择可能会因环境和需求而异,建议在实际操作中参考官方文档和相关资料,以确保配置正确和可靠。 ### 回答3: PostgreSQL是一种非常强大的开源数据库管理系统,在构建高可用集群时,可以采用以下指南: 1. 安装和配置PostgreSQL:首先,需要在每个节点上安装和配置PostgreSQL。可以从官方网站下载适用于您的操作系统的最新版本,并按照说明进行安装。确保在每个节点上进行相同的配置,包括数据库路径、监听地址和端口等。 2. 设置主从复制:在高可用集群中,通常会将一个节点作为主节点,其他节点作为从节点。主节点负责处理写操作,而从节点负责处理读操作。在主节点上进行设置,以使其将更改记录到WAL(Write-Ahead Log)并发送给从节点,从节点可以通过流复制技术将更改同步到自己的本地数据库。 3. 配置复制流:在从节点上配置复制流以接收主节点发送的更改。可以使用PostgreSQL提供的pg_basebackup工具来进行复制流设置。确保在从节点上指定主节点的地址和端口,并指定复制流的用户名和密码。 4. 配置故障切换:在高可用集群中,当主节点发生故障时,必须能够实现自动故障切换。这可以通过使用PostgreSQL的流复制和触发器来实现。可以编写一个触发器,当检测到主节点故障时,自动将一个从节点提升为新的主节点,并将其他从节点重新配置为复制新的主节点。 5. 监控和管理:在构建高可用集群时,需要定期监测各个节点的状态和性能。可以使用PostgreSQL自带的工具,如pg_stat_replication和pg_stat_activity来监控复制状态和数据库活动。此外,还可以使用第三方监控工具,如Zabbix或Nagios来实时监测集群的运行状态,并及时采取措施应对潜在的故障。 在配置和管理PostgreSQL高可用集群时,请确保备份数据库,定期更新软件版本,并遵循最佳实践和安全措施,以确保数据的完整性和可用性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值