如何在postgres中对只读副本执行读查询?

问题描述 投票:0回答:1

我在 k8s 中部署了一个 PostgreSQL 实例,其中包含一个主 Pod 和一个副本 Pod。我想知道如何在只读副本上执行读取查询并在主服务器上执行写入查询?目前,我发送到数据库的所有请求都由主服务器提供(连接到主服务器之后)。我是否需要显式连接到只读副本才能进行查询,或者 Postgres 中是否有某种机制可以将流量路由到只读副本?

postgresql kubernetes database-replication
1个回答
0
投票

没有可靠的方法可以自动将读取请求重定向到备用数据库,因为在 PostgreSQL 中,您无法可靠地判断 SQL 语句是否写入。您必须教您的应用程序连接到备用数据库以执行读取请求。

请注意,以这种方式进行水平缩放会带来一些问题:

  • 由于复制是异步的,并且复制冲突可能会延迟重播,因此主服务器上的更改可能不会立即在备用服务器上可见

  • 如果您在备用数据库上有长时间运行的查询,它们可能会由于复制冲突而被取消,您必须重试它们

© www.soinside.com 2019 - 2024. All rights reserved.