我有一套4个流浪者系统。
我的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配置文件,因为我认为它们与此无关,但如果需要我会添加它们。
答案 0 :(得分:2)
如果在节点发生故障时将后端节点设置为故障转移,则Pgpool-II会在对其执行故障转移后分离故障节点。在你的情况下发生了什么。但是一旦分离,失败的节点永远不会自动附加回Pgpool-II,即使它们再次可用/可达。原因是Pgpool-II无法自行确定节点故障是否导致某些数据损坏和/或是否仍按用户的意图正确复制。 因此,需要手动将失败的节点连接到Pgpool-II,并且可以使用pcp_attach_node命令。