本文介绍了Pgpool未重新建立连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一套4个流浪系统。

  • Web1(主数据库)
  • Web2(从Web1复制数据库)
  • mgmt(我从中连接的节点)
  • Web3(pgpool正在运行)

Mypgpool设置为在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 conf文件,因为我认为它们与此无关,但如果需要,我会添加它们。

推荐答案

如果将后端节点设置为在节点发生故障时进行故障切换,则在对其执行故障切换后,Pgpool-II会分离故障节点。这就是发生在你身上的事情。但是,一旦分离,故障节点永远不会自动连接回Pgpool-II,即使它们再次变为可用/可访问。原因是Pgpool-II本身无法确保节点故障是否已导致某些数据损坏和/或它是否仍按用户预期正确复制。因此,故障节点需要手动连接到Pgpool-II,为此,您可以使用pcp_attach_node命令。

这篇关于Pgpool未重新建立连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-18 18:34