我了解的一些postgresql集群知识

Posted wenzhongyan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我了解的一些postgresql集群知识相关的知识,希望对你有一定的参考价值。

    最近有些同事在咨询我Postgresql数据库集群高可用容灾的情况,PG库因为是开源数据库,其实现功能的周边产品和插件有很多,这里列几个典型的方案介绍给大家

  1. postgresql流复制

PostgreSQL支持物理复制(通常又称之为流复制)及逻辑复制两种。通过流复制技术,可以从实例级复制出一个与主库一模一样的实例级的从库,并且支持只读。

(*类似与oracle的ADG功能,但是如果要更多功能可以借助第三方插件如pgpool实现读写分离和负载均衡。)

  1. pgpool-II

一个位于 PostgSQL  服务器和 client 之间的中间件,它可以实现容灾复制,负载均衡和平行查询等高可用的功能,pgpool-II可以使用现有的数据库应用程序做到几乎不修改的使用和部署。(*类似在oracleADG上层再构建一层应用实现查询分流访问等功能)

官方网址:pgpool Wiki

  1. Postgres-XC/XL/X2

Postgres-XC/XL/X2 是一种提供写可靠性,多主节点数据同步,数据传输基于PostgreSQLSHARED NOTHING的分布式关系型数据库集群。我们拿Postgres-XL来说,一个实例实际上是由多个独立的 PostgreSQL 实例组成,它们分布在不同的物理(或虚拟)主机上协同工作,呈现给用户的是一个数据库实例的效果。

官网更新响应不太及时,最近的更新都是2018

官方网址:http://www.postgres-xl.org/overview/

  1. citus

citus有点类似与前者,不过它是PostgreSQL数据库中的一种轻量级的分库分表解决方案,构建的同样也是分布式集群。citus不是一个单独的程序,它是PostgreSQL数据库中的一个插件,可以使用create extension安装此插件。它允许数据库服务器(称为节点)在“无共享”架构中相互协调。这些节点形成一个集群,允许 PostgreSQL 保存更多数据并使用比单台计算机更多的 CPU 内核。这种架构还允许通过简单地向集群添加更多节点来扩展数据库。

官方网址:https://www.citusdata.com/

  1. bucardo

bucardo有点类似与oracleogg, 是专门针对PG数据库利用复制技术实现主从复制,双向复制,一对多复制,异步容灾等功能的工具。其是基于PG数据库触发器存储有关需同步相关的表中哪些被更改的信息,然后通过Perl守护进程,侦听通知请求并对其进行操作,连接到远程数据库并来回复制数据,是一类逻辑同步软件

另外类似的逻辑复制工具还有:Slony-IRubyrep当然OGG也可以算实现相同功能

官方网址:Bucardo

以上是常见的几种开源集群模式,当然除了上面的还有类似SkyTools TungstenStado等等很多其他实现集群的工具,结合我们PG新产品的特点,如果用户只是需要容灾,用PG的流复制功能就可以实现,如果要实现高用容灾需求建议使用pgpool-II搭建读写分离的负载均衡容灾集群。

  另外几个方案如Postgres-XC/XL/X2citus主要是针对分布式集群部署,对我们不太实用,bucardo基于触发器的同步复制,数据结构的变更对其可靠性和维护量的影响会有大,一般也不建议。

以上是关于我了解的一些postgresql集群知识的主要内容,如果未能解决你的问题,请参考以下文章

我了解的一些postgresql集群知识

我了解的一些postgresql集群知识

PostgreSQL:单个数据库而不是整个集群的时间点恢复

PostgreSQL 基础知识:psql 提示和技巧

postgresql + pgpool 构建容灾高可用集群(数据同步流复制/主备自动切换)

目前最火的PostgreSQL数据库,我通关了 | PostgreSQL技能树测评