Pgpool没有恢复连接

时间:2017-08-19 04:42:55

标签: database postgresql load-balancing pgpool

我有一套4个流浪者系统。

  • web1(主要数据库)
  • web2(db从web1复制)
  • mgmt(Im连接的节点)
  • web3(pgpool正在运行)

我的pgpool设置为在web1和web2上的数据库之间进行负载平衡。它运行良好,我可以连接到数据库,即使其中一个已经通过pgpool。但是当我把两个数据库都关闭时(web1和web2),我失去了通过pgpool存在的连接。

现在,当我再次启动主数据库时,我假设pgpool应该重新获得该连接,但事实并非如此。即使我的假设是错误的,我如何让pgpool再次获得与web1和web2上的数据库的连接?

目前,在两个数据库都关闭后,我收到了消息 -

server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
The connection to the server was lost. Attempting reset: Failed.

当我再次重新启动数据库时,我仍然收到此消息 -

psql: server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.

只有重新启动系统,我才能恢复连接。有什么东西我不知道或者我误解了pgpool的工作方式吗?

我没有在这里添加pgpool和postgresql配置文件,因为我认为它们与此无关,但如果需要我会添加它们。

1 个答案:

答案 0 :(得分:2)

如果在节点发生故障时将后端节点设置为故障转移,则Pgpool-II会在对其执行故障转移后分离故障节点。在你的情况下发生了什么。但是一旦分离,失败的节点永远不会自动附加回Pgpool-II,即使它们再次可用/可达。原因是Pgpool-II无法自行确定节点故障是否导致某些数据损坏和/或是否仍按用户的意图正确复制。 因此,需要手动将失败的节点连接到Pgpool-II,并且可以使用pcp_attach_node命令。