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

dfddblmv  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(158)

我在k8s中部署了一个PostgreSQL示例,有一个master pod和一个replica pod。我想知道如何在读副本上执行读查询,在master上执行写查询?目前,我发送给DB的所有请求都由master服务(连接到主机后).我是否需要显式连接到读副本以进行查询,或者Postgres中是否有某种机制可以将流量路由到读副本?

unftdfkk

unftdfkk1#

没有可靠的方法自动将读请求重定向到备用对象,因为在PostgreSQL中,你不能可靠地判断一个SQL语句是否写(例如:你可以创建一个删除行的函数,并在SEKECT语句中调用它)。你必须教你的应用程序连接到备用对象来执行读请求。
请注意,以这种方式进行水平缩放会带来一些问题:

  • 由于复制是异步的,并且复制冲突可能会延迟重放,因此主服务器上的更改可能不会立即在备用服务器上可见
  • 如果在备用服务器上有长时间运行的查询,则这些查询可能由于复制冲突而被取消,您必须重试

相关问题