PostgreSQL的最佳群集高可用性方案( 二 )

  • 安装简单
  • 平台独立,表格设计独立 。
  • Pgpool II它是一种在PostgreSQL服务器和PostgreSQL数据库客户端之间工作的中间件 。
    一些功能:
    • 连接池
    • 复写
    • 负载均衡
    • 自动故障转移
    • 并行查询
     
    PostgreSQL的最佳群集高可用性方案

    文章插图
       Bucardo基于行的异步级联主从复制,使用触发器在数据库中排队;基于行的异步主-主复制,基于行,使用触发器和自定义冲突解决方案 。
    Bucardo需要专用的数据库并作为Perl守护程序运行,该守护程序与此数据库以及复制中涉及的所有其他数据库进行通信 。它可以作为多主机或多从机运行 。
    主从复制涉及到一个或多个目标的一个或多个源 。源必须是PostgreSQL,但是目标可以是PostgreSQL,MySQL,redis,Oracle,MariaDB,SQLite或MongoDB 。
    一些功能:
    1. 负载均衡
    2. 从站不受限制,可以写
    3. 部分复制
    4. 按需复制(更改可以自动或在需要时推送)
    5. 从站可以“预热”以快速设置
    缺点:
    • 无法处理DDL
    • 无法处理大物件
    • 没有唯一键无法增量复制表
    • 不适用于Postgres 8之前的版本
    Postgres-XCPostgres-XC是一个开源项目,旨在提供可写扩展,同步,对称和透明的PostgreSQL集群解决方案 。它是紧密耦合的数据库组件的集合,可以将其安装在多个硬件或虚拟机中 。
    写可伸缩性意味着Postgres-XC可以配置任意数量的数据库服务器,并且与单个数据库服务器相比,可以处理更多的写操作(更新SQL语句) 。
    您可以有多个客户端连接到的数据库服务器,该服务器提供数据库的单个一致的群集范围视图 。
    来自任何数据库服务器的任何数据库更新对于在不同主服务器上运行的任何其他事务都是立即可见的 。
    透明意味着您不必担心内部如何将数据存储在多个数据库服务器中 。
    您可以配置Postgres-XC在多个服务器上运行 。您为每个表选择的数据以分布式方式存储,即分区或复制 。发出查询时,Postgres-XC会确定目标数据的存储位置,并向包含目标数据的服务器发出相应的查询 。
    PostgreSQL的最佳群集高可用性方案

    文章插图
       CitusCitus用内置的高可用性功能(例如自动分片和复制)替代了PostgreSQL 。Citus分片将您的数据库分片,并在整个商品节点集群中复制每个分片的多个副本 。如果群集中的任何节点不可用,Citus会将所有写入或查询透明地重定向到其他一个包含受影响的分片副本的节点 。
    一些功能:
    • 自动逻辑分片
    • 内置复制
    • 用于灾难恢复的数据中心感知复制
    • 具有高级负载平衡功能的中查询容错
    您可以增加由PostgreSQL支持的实时应用程序的正常运行时间,并最大程度地减少硬件故障对性能的影响 。您可以使用内置的高可用性工具来实现此目标,从而最大程度地减少成本高昂且易于出错的手动干预 。
    PostgresXL【PostgreSQL的最佳群集高可用性方案】它是一种无共享的多主群集解决方案,可以透明地在一组节点上分配表,并并行执行这些节点的查询 。它具有一个称为全局事务管理器(GTM)的附加组件,用于提供群集的全局一致视图 。该项目基于PostgreSQL 9.5版本 。一些公司,例如2ndQuadrant,为该产品提供商业支持 。
    PostgresXL是可水平扩展的开源SQL数据库集群,具有足够的灵活性来处理各种数据库工作负载:
    • OLTP写密集型工作负载
    • 需要MPP并行性的商业智能
    • 运营数据存储
    • 键值存储
    • GIS地理空间
    • 混合工作负载环境
    • 多租户提供商托管环境
    组件:
    • 全局事务监视器(GTM):全局事务监视器确保群集范围内的事务一致性 。
    • 协调器:协调器管理用户会话并与GTM和数据节点进行交互 。
    • 数据节点:数据节点是存储实际数据的位置 。
    结论还有许多其他产品可以为PostgreSQL创建我们的高可用性环境,但是您必须注意以下几点:
    • 新产品,未经充分测试
    • 停产项目
    • 局限性
    • 许可费用
    • 非常复杂的实现
    • 不安全的解决方案
    您还必须考虑您的基础架构 。如果只有一台应用程序服务器,那么无论您配置了多少数据库的高可用性,如果应用程序服务器发生故障,则将无法访问 。您必须很好地分析基础架构中的单点故障,并尝试解决它们 。


    推荐阅读