代码改变世界

【PostgreSQL】PostgreSQL的高可用方案

2022-06-25 15:42  abce  阅读(3950)  评论(0编辑  收藏  举报

比较老的一片文章,不具备多大的参考意义。

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

 

PostgreSQL自身并不提多主集群架构。

名词解释

·Warm standbys: 不提供对外的连接

·Hot standbys: 可以对外提供只读连接

img

集群的两种架构

img

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

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

img

·Corosync:处理主机之间的消息。

·Pacemaker:启动和停止服务,确保它们仅在一台主机上运行。

·DRBD:在块设备级别同步数据。

 

img

Rubyrep

Rubyrep提供了异步、多主的、多平台的复制方案,支持MySQL、PostgreSQL。

Rubyrep是基于触发器的,不支持ddl、用户、和授权。其架构的主要目标是简单和易于管理。

Pgpool-II

Pgpool-II是工作于PostgreSQL和客户端之间的中间件。

包括:

·连接池

·复制

·负载均衡

·自动故障转移

·并行查询

配置在流复制之上

img

Bucardo

Bucardo提供异步级联的主从复制架构,基于行,使用触发器和队列,以及异步的主主复制。

具有以下特性:

·负载均衡

·从库不受约束,可写

·部分复制

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

·从库可以“预热”以进行快速设置

 

缺点:

·无法处理 DDL

·无法处理大对象

·无法增量复制没有唯一键的表

·不适用于Postgres 8之前的版本

Postgres-XC

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

写扩展意味着Postgres-XC可以配置任意数量的数据库服务器,并且与单个数据库服务器相比,可以处理更多的写入。

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

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

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

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

img

Citus

Citus是PostgreSQL的直接替代品,具有内置的高可用功能,例如自动分片和复制。Citus对你的数据库进行分片,并在节点集群中复制每个分片的多个副本。如果集群中的某个节点不可用,Citus会透明地将任何写入或查询重定向到其他包含受影响分片的副本节点。

提供的功能:

·自动逻辑分片

·内置复制

·用于灾难恢复的数据中心感知复制

·具有高级负载均衡的中间查询容错

PostgresXL

PostgresXL是一种无共享、多主集群解决方案,可以透明地将表分布在一组节点上,并在这些节点并行执行查询。它有一个称为全局事务管理器 (GTM) 的附加组件,用于提供全局一致的集群视图。

PostgresXL是一个水平可扩展的开源SQL数据库集群,足够灵活处理不同的数据库工作负载:

·OLTP写入密集型工作负载

·需要MPP并行性的商业智能

·操作数据存储

·键值存储

·地理信息系统

·混合工作负载环境

·多租户托管环境

img

组件:

·全局事务监视器 (GTM):全局事务监视器确保集群范围的事务一致性。

·Coordinator:Coordinator管理用户会话并与GTM和数据节点交互。

·数据节点:数据节点是存储实际数据的地方。