我有两台Linux服务器(A
和B
),安装了PostgreSQL 9.5
数据库.我按照documentation中的描述配置了hot standby模式.在此设置中,A
配置为主机,B
配置为热备用模式.这项技术运行良好,性能符合预期.
现在,我想通过TomEE
数据源通过Hibernate
/JDBC
将一个独立的Java EE
应用程序(在另一台机器上运行)连接到这个数据库设置.
PostgreSQL driver个文档指出,可以在jdbc连接url中指定多个主机:
jdbc:postgresql://host1:port1,host2:port2/database
所以我的问题是:
- 如果
A
关闭,B
手动切换到正常操作模式,我的应用程序是否仍然能够使用上述jdbc连接url继续进行数据库操作? - 我必须配置其他参数/库吗?
注意:我从各种渠道了解到,PostgreSQL
不支持自动故障切换(除非过程中涉及第三方软件——请参阅下面的注释).因此,故障切换需要手动执行,这对于这个特定的用例来说是可以的.
EDIT-1:
我决定测试pgBouncer
(正如 comments 中所建议的)作为解决办法.它在我的用例中运行良好.我写了一个看门狗脚本,自动执行手动步骤:
- 继续判断
A
是否仍处于活动状态,并侦听传入的连接. - 在故障转移的情况下,将
B
切换到正常操作模式,让它成为新的主设备并重新启动服务. - 将
pgBouncer
设置更改为指向B
而不是A
,然后重新启动服务.
然而,如果有人没有第三方软件的经验,我仍然很感兴趣?