我们的一个 Java 项目需要一个高度可靠的冗余数据存储系统,即使其中一个数据库引擎发生故障,应用程序仍然可以读取数据并将数据写入其他存储。恢复故障节点后,新数据会自动同步回来。
我们考虑了一个混合环境,比如一个 PostgreSQL 数据库作为主节点,另一个服务器上的另一个 PostgreSQL 数据库作为辅助节点,例如。服务器应用程序附近的 HSQL 文件数据库作为第三个节点。
我们喜欢在这个系统的顶部使用 JPA 层(可能是 Hibernate)。由于持久性,我考虑了一个透明的 JDBC 驱动程序,它隐藏所有的复制细节。到目前为止,我已经在网上找到了这些项目:
- HA-JDBC (自2009-06-22以来没有更新)
- C-JDBC (现在Tungsten Replicator)
这些解决方案看起来都没有前途。 HA-JDBC 已经过时了,而且 Tungsten 似乎主要用于 MySQL。我什至还没有找到有关将这些与 JPA 一起使用的示例。
我们还有其他解决方案吗?也许我们应该以不同的方式解决这个问题?
最佳答案
为什么要这样做,如果您试图解决的问题是故障转移或 100% 正常运行时间或故障时的冗余,那么还有其他方法可以解决。
两个postgresql数据库,一主一辅应该没问题。您还可以在带有虚拟机的云服务器上运行这些,理论上云服务器永远不会宕机,因为如果一台机器死机,您的虚拟机就会在另一台机器上运行。
有很多思考的方法。
关于java - Java 应用程序的后备数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6342019/