【问题标题】:Pgpool not regaining connectionPgpool 没有恢复连接
【发布时间】:2018-01-27 19:03:51
【问题描述】:

我有一套 4 个流浪系统。

  • web1(主数据库)
  • web2(从 web1 复制的数据库)
  • mgmt(我连接的节点)
  • 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 conf 文件,因为我认为它们与此无关,但如果需要我会添加它们。

【问题讨论】:

    标签: database postgresql load-balancing pgpool


    【解决方案1】:

    如果后端节点设置为在节点故障的情况下进行故障转移,Pgpool-II 会在故障节点上执行故障转移后分离故障节点。这就是你的情况。但是一旦分离,失败的节点永远不会自动连接回 Pgpool-II,即使它们再次变得可用/可访问。原因是 Pgpool-II 无法自行确保节点故障是否导致某些数据损坏和/或是否仍按用户预期正确复制。 所以失败的节点需要手动附加到 Pgpool-II,为此你可以使用pcp_attach_node 命令。

    【讨论】:

    • 你能在文档中给我一些参考吗?
    • 我怀疑Pgpool-II官方文档中是否提到过,但这就是Pgpool-II的工作方式。请参阅blog.dbi-services.com/… 博客文章,其中涉及将节点重新附加到 Pgpool 的主题
    猜你喜欢
    • 2014-04-08
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    相关资源
    最近更新 更多