我正在寻求指导。
我想在 3 台服务器之间建立复制:1 台主机 A,2 台从机 B 和 C。主机流向 2 台从机。A 到 B 是逻辑复制,而 A 到 C 是流复制
在我阅读了一些文章之后,我现在知道流复制涉及到pg_basebackup
,从站从主站提取数据。
问题 :
我在这里和这里阅读了这些文章。哪一个是正确的,
"ALTER SYSTEM SET listen_addresses TO '*';"
或者listen_addresses = 'your_primary_IP_address'
。我只是困惑。在进行涉及 3 台服务器的复制之前,有哪些注意事项?
谢谢 postgresql 12,Ubuntu 20.04
您的问题询问如何启用与 PostgreSQL 集群的网络连接。您可以使用您描述的任何一种方法,它们在大多数情况下大致等效。更改
listen_addresses
需要重新启动服务器,因此请相应地进行计划。一个考虑因素是您的主机是否是多宿主的,即连接到多个网络。如果是这样,并且您不想将 PostgreSQL 公开给所有网络,则指定要将 PostgreSQL 绑定到的网络的接口 IP,并忽略那些您不想绑定的网络。
特殊地址 '*' 告诉 PostgreSQL 绑定到所有可用地址。在大多数情况下,这只是服务器的单个 IP。(
localhost
但这并不重要。)如果您启用了防火墙,那么您还需要允许通过防火墙进行连接。
启用网络连接存在严重的安全隐患。 永远不要将 PostgreSQL 暴露在未经过滤的公共互联网上。如果发生这种情况,您的数据库将被黑客入侵并变成加密货币矿工。使用防火墙来限制对复制客户端的访问。
DigitalOcean 文章没有提到它,因此它可能在 Ubuntu 上默认存在,但您需要一个条目来
pg_hba.conf
告诉 PostgreSQL 如何验证网络客户端。如果在复制客户端尝试连接时在 PostgreSQL 日志中出现身份验证错误,那么这很可能是问题所在。