我在会话池模式下使用pgBouncer,但是像大多数人一样,当我发出PAUSE进行数据库切换时遇到麻烦,因为任何发出 any SQL的会话都会导致此挂起。基本上,我正在寻找“强制”暂停,所有非空闲会话都将断开连接。
我尝试过的事情:
1)暂停 ...,但是如果您有任何阻止会话,则该会话不会被杀死,您需要在服务器上对其进行追踪。
2)先设置query_timeout = 1 ,然后暂停 ...,但是query_timeout不适用于暂停,因此会永久挂起。
3) SUSPEND ...,但这并不完全相同,当您断开连接时会自动 RESUME 。
4)杀死 ...,但是这会无差别地杀死所有内容,并且客户端会硬断开。
我意识到最好的解决方案是使用pool_mode=transaction
,但像往常一样,我无法让开发人员参与其中。
在会话池模式下在应用程序服务器上使用pgBouncer时,是否有一些我缺少的最佳方法来执行切换/故障转移?