首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Postgres与pgpool体系结构

Postgres与pgpool体系结构
EN

Database Administration用户
提问于 2016-01-08 17:14:47
回答 2查看 3.7K关注 0票数 9

下面是一个示例pgpool体系结构:

这意味着您只需要在单个服务器上拥有pgpool;这是真的吗?当我查看配置时,我还看到您在pgpool.conf中配置后端;因此,它进一步暗示了这一点。但是,这并不能解释为什么我也会在后端服务器上看到pgpool。

在查看文献资料时,我还看到:

如果您使用的是PostgreSQL 8.0或更高版本,则强烈建议在所有要由pgpool访问的PostgreSQL上安装pgpool_regclass函数,因为pgpool在内部使用。

所以我不知道该怎么想;是否最好在所有后端都有pgpool,或者只是一个专用的服务器?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2016-01-11 21:52:09

通常,您不会在后端服务器上安装Pgpool。您在图片中看到的是最常见的配置。Pgpool是一个独立的服务器,本质上位于数据库的前面。两个Postgres服务器通常配置为流复制;其中一个是主服务器,另一个是从服务器。

这允许Pgpool在两个(或更多)数据库之间加载平衡所有读取查询。任何涉及任何写入的查询都将被路由到主服务器,而主服务器又会复制到从服务器。

作为@Neil McGuigan said,您还可以拥有多个Pgpool服务器以实现更好的高可用性。从技术上讲,您可以在此配置的数据库服务器上安装Pgpool,但这将是错误的做法。运行多个Pgpool服务器是一种更为复杂的配置。如果这是您第一次使用Pgpool,我会先从一台Pgpool服务器开始,然后再让两台开始工作。

在这两种配置中,您的应用服务器都认为它只是连接到单个Postgres数据库。

关于pgpool_regclass,这应该是另外一个问题,这是Pgpool常见问题解答

如果您使用的是PostgreSQL 8.0或更高版本,则强烈建议在所有要由pgpool访问的PostgreSQL上安装pgpool_regclass函数,因为pgpool在内部使用。否则,在不同的模式中处理重复的表名可能会带来麻烦(临时表不是问题)。如果您使用的是PostgreSQL 9.4.0或更高版本和pgpool 3.3.4或更高版本、3.4.0或更高版本,则不需要安装pgpool_regclass,因为PostgreSQL 9.4已经内置了类似于pgpool_regclass的"to_regclass“函数。

如果您需要这样做,那么只需在Postgres主服务器上运行一些SQL代码来添加Pgpool使用的函数。

对于regclass,还有一个额外的步骤要做(我在考虑insert_lock)。如果您是从源代码编译的(通常大多数发行版的Pgpool版本都是过时的),那么您也必须编译Postgres库。

如果您是从源代码编译的,则必须进入.../pgpool-II-3.X.X/src/sql/pgpool-regclass文件夹并执行./configure; make

将pgpo-regclass.so文件复制到Postgres扩展名目录中。在我的Ubuntu14.04服务器上(仅使用Postgres9.3包安装),它位于:/usr/lib/postgresql/9.3/lib。请记住对所有Postgres服务器执行此操作。

一旦完成,您就可以在主服务器上运行pgpool-regclass.sql了。这只是将pgpool_regclass函数映射到您复制的库中。

票数 10
EN

Database Administration用户

发布于 2016-06-08 01:55:35

与其他所有东西一样,您可以通过多种方式完成高可用性部署。在这里,我将根据我的经验(我自己的HA实现)提出一些建议:

  1. 最好有多个pgpool2实例,而不是单个实例。原因很明显:单pgpool2是单点故障。由于pgpool引入了看门狗功能,所以很容易实现。
  2. 通常,在单独的机器上拥有pgpool2实例比在PostgreSQL后端和pgpool2之间共享同一台机器要稍微好一些。但是,即使您在与PostgreSQL相同的服务器上运行它们,也没有明显的缺点。(在我的HA实现中,每台机器都运行一个PostgreSQL实例和一个pgpool2实例。)

最后,我将推荐引导您从头开始的本教程一步一步 (安装PostgreSQL服务器.)以完成高可用性实现。上述教程描述了我使用的实现。

希望能帮上忙。

更新:谢谢@Moshe链接发生了变化。现在在这里更新,在原来的帖子里也有。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/125662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档