postgresql 当主机名解析为多个IP地址时,libpq的行为是什么?

xsuvu9jc  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(175)

我有一个pg_autoffailover集群,由单个监视节点监视,1个主节点接受读写连接,2个备用节点从主节点接收WAL以保持最新。
目前,我将所有3个IP发布到我的客户端应用程序,使用它们形成PostgreSQL连接字符串:postgresql://user:pass@ip1:5432,ip2:5432,ip3:5432/dbname。我希望客户端应用程序始终连接到当前的主节点,所以我建议他们使用targetServer=primary
一切都很顺利。
现在我已经开始使用基于TLS的连接,并且需要我所有的postgres节点共享一个主机名和证书,因为一些不相关和不可避免的原因。所以基本上我的DNS服务器将主机名my_awesome_hostname解析为3个IP地址:ip1,ip2 and ip3
我的问题是,如果我告诉我的客户端使用连接字符串:postgresql://user:pass@my_awesome_hostname:5432/dbname,那么,在客户端,libpq是否会保持与现在类似的行为?它是否会尝试连接到从DNS记录1 by 1返回的每个IP,并与主节点建立连接?

klh5stk1

klh5stk11#

根据我对源代码的阅读,PostgreSQL会将所有的IP地址存储在它的连接对象中,并将它们视为您指定了多个主机。顺便说一下,该参数称为target_session_attrs,而不是targetServer

相关问题