如果主数据库脱机,则数据源将在运行时更改为辅助数据库

时间:2019-06-06 08:20:01

标签: performance connection datasource failover

对于带有Oracle数据库的spring应用程序,我必须处理以下情况:

  1. Spring应用程序使用主数据库。同时,辅助数据库存储用于灾难恢复的数据(从主数据库)。

当前已提供第一步。此时,我必须实现:

  1. 当主数据库脱机时,应用程序应更改与辅助数据库的连接)。

实施应以编程方式进行。在不更改当前存在的代码的情况下如何实现?有没有可行的解决方案(图书馆)?

我考虑过AbstractRoutingDataSource和ping数据库(例如每5秒一次),但是我不确定这种解决方案。

1 个答案:

答案 0 :(得分:0)

因此,让我们总结一下问题。我无法使用Oracle RAC(真实应用程序集群)。如果应该以编程方式实现,则可以尝试AbstractRoutingDataSource方法。

我实现了一个计时器,该计时器每1秒钟对当前数据库执行一次ping操作(您可以使用验证查询并检查是否可以从数据库读取...如果不存在,我们假设没有连接,并且可以切换数据源)。

由于我能够在当前数据源脱机时在运行时更改数据源。更重要的是它是自动的。

另一方面,也有缺点:

  • 如果数据库不是,用户可以在短时间内看到错误 切换了。
  • 如果某些应用程序运行不正确,可能会停止运行 确保不会与数据库建立连接。