pg集群搭建常用的两种方式及对比

pg常用的两种技术:分别是Pgpool-II和Postgres-XL。

1.1、Pgpool-II
Pgpool-II相当于中间件,位于应用程序和PG服务端之间,对应用程序来说,Pgpool-II就相当于PG服务端;对PG服务端来说,Pgpool-II相当于PG客户端。由此可见,Pgpool-II与PG是解耦合的,基于这样的机制,Pgpool-II可以搭建在已经存在的任意版本的PG主从结构上,主从结构的实现与Pgpool-II无关,可以通过slony等工具或者PG自身的流复制机制实现。除了主从结构的集群,Pgpool-II也支持多主结构,称为复制模式,该模式下PG节点之间是对等的,没有主从关系,写操作同时在所有节点上执行,这种模式下写操作的代价很大,性能上不及主从模式。PG 9.3之后支持的流复制机制可以方便的搭建主从结构的集群(包括同步复制与异步复制),因此Pgpool-II中比较常用的模式是流复制主从模式,其结构如下图(也可以一主多从)。

既然PG可以通过自身的流复制机制方便的搭建主从结构集群,为什么还要在它上面搭建Pgpool-II呢?因为简单的主从结构集群并不能提供连接池、负载均衡、自动故障切换等功能,Pgpool-II正好可以做到这些,当然负载均衡只针对读操作,写操作只发生在主节点上。为了避免单点故障,Pgpool-II自身也可以配置为主从结构,对外提供虚拟IP地址,当主节点故障后,从节点提升为新的主节点并接管虚拟IP。
 

1.2、Postgres-XL
Postgres-XL的机制和Pgpool-II大不相同,它不是独立于PG的,是在PG源代码的基础上增加新功能实现的。简单来说,Postgres-XL将PG的SQL解析层的工作和数据存取层的工作分离到不同的两种节点上,分别称为Coordinator节点和Datanode节点,而且每种节点可以配置多个,共同协调完成原本单个PG实例完成的工作。此外,为了保证分布模式下事务能够正确执行,增加了一个GTM节点。为了避免单点故障,可以为所有节点配置对应的slave节点。Postgres-XL结构图见下图,来自官网。
 

Postgres-XL的Coordinator节点是整个集群的数据访问入口,可以配置多个,然后在它们之上通过Nginx等工具实现负载均衡。Coordinator节点维护着数据的存储信息,但不存储数据本身。接收到一条SQL语句后,Coordinator解析SQL,制定执行计划,然后分发任务到相关的Datanode上,Datanode返回执行结果到Coordinator,Coordinator整合各个Datanode返回的结果,最后返回给客户端。
Postgres-XL的Datanode节点负责实际存取数据,数据在多个Datanode上的分布有两种方式:复制模式和分片模式,复制模式下,一个表的数据在指定的节点上存在多个副本;分片模式下,一个表的数据按照指定的规则分布在多个数据节点上,这些节点共同保存一份完整的数据。这两种模式的选择是在创建表的时候执行CREATE TABLE语句指定的,也可以通过ALTER TABLE语句改变数据的分布方式。

 

2、 Pgpool-II和Postgres-XL对比

 

 

pgpool集群搭建:https://www.jianshu.com/p/41d857a5d743

pg集群的两种搭建方式及效率对比:https://segmentfault.com/a/1190000007012082?utm_source=tag-newest

 

 

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要搭建PostgreSQL集群,你可以按照以下步骤进行操作: 1. 首先,你需要在每个节点上安装PostgreSQL数据库软件。你可以从官方网站下载并安装适合你操作系统的版本。\[3\] 2. 在主节点上,你需要修改数据库密码。你可以使用以下命令来修改密码:su - postgres psql -U postgres ALTER USER postgres WITH ENCRYPTED PASSWORD '新密码'; \du \q \[1\] 3. 在从节点上,你需要使用pg_rewind命令将从节点的数据目录回滚到与主节点一致的状态。你可以使用以下命令来执行回滚操作:pg_rewind --target-pgdata=/opt/pgsql11/data --source-server='host=主节点IP地址 port=5432 user=postgres dbname=postgres password=主节点密码' \[2\] 4. 在每个节点上,你需要配置数据库集群的参数。你可以编辑每个节点上的postgresql.conf文件来进行配置。 5. 最后,你需要启动每个节点上的PostgreSQL服务,并确保它们能够相互通信。 通过以上步骤,你就可以成功搭建一个PostgreSQL集群。请注意,这只是一个简单的概述,具体的操作步骤可能会因为你的环境和需求而有所不同。建议你参考官方文档或者其他可靠的资源来获取更详细的指导。 #### 引用[.reference_title] - *1* *3* [搭建PostgreSQL高可用集群(基于Pacemaker+Corosync)](https://blog.csdn.net/mengshicheng1992/article/details/123612431)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [postgressql数据库集群搭建](https://blog.csdn.net/dragonsmile/article/details/100041279)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值