我有两台安装了PostgreSQL 9.5
数据库的Linux服务器(A
和B
)。我配置了热备份模式,如documentation中所述。在此设置中,A
被配置为主设备,B
处于热备份模式。这是行之有效的行为如预期。如何在JavaEE应用程序中为PostgreSQL Hot Standby设置配置连接故障转移?
现在,我想通过TomEE
数据源到该数据库设置通过Hibernate
/JDBC
连接一个独立的应用程序Java EE
(不同的机器上运行)。
的PostgreSQL driver文档状态,使多台主机可以在JDBC连接URL指定:
jdbc:postgresql://host1:port1,host2:port2/database
所以我的问题是:
- 如果
A
向下,B
手动切换到正常操作模式,我的应用程序是否仍然能够使用上述的jdbc连接url进行数据库操作? - 我必须配置其他参数/库吗?
注意:从我学到的各种资源中,PostgreSQL
不支持自动故障转移(除非在此过程中涉及第三方软件 - 请参阅下面的注释)。出于这个原因,故障转移需要手动执行,这对于这个特定的用例来说是可以的。
EDIT-1:
我决定测试pgBouncer
(如在意见提出)为一种解决方法。它适用于我的使用情况。我写了一个看门狗脚本,它可以自动的手动步骤:
- 汽车无校验,如果
A
仍然活着,并监听传入的连接。 - 如果发生故障切换,请将
B
切换到正常运行模式,并让它成为新的主站并重新启动服务。 - 将
pgBouncer
设置更改为指向B
而不是A
并重新启动服务。
但是,如果有人有没有第三方软件的经验,我还会感兴趣吗?
最简单的设置是在两台服务器之前放置pgBouncer或pgPool之类的东西,让应用程序通过它连接。 –
@a_horse_with_no_name感谢您的提示。你现在有没有什么有用的指南来设置pgPool(来自Ubuntu仓库),你会推荐? – rzo
我有一个主和一个只读热stanby postgresql 9.6服务器的类似设置。有一个pgbouncer在他们面前运行。我可以通过更改pgbouncer配置文件的一行来轻松切换到新的主文件。 我已阅读有关自动故障转移群集(使用corosync和pacemaker)的论文,但对我而言这些文件太复杂。如果您有高级Linux系统管理经验,您应该尝试一下。 http://clusterlabs.org/ –