我正在寻找 grails 应用程序中自动数据库故障转移的解决方案。我有两个数据库,它们位于通过 WAN 连接的两个不同站点上。在站点 A 上,我们有数据库 01,它是数据库所在的同一站点上的应用程序的主数据库,即应用程序 1,而它将被视为应用程序 2 的其他站点上的应用程序的辅助数据库,反之亦然。
请参考下图了解更多详情:
因此,根据上述设计:
- 部署在站点 A 上的应用程序应主要使用站点 A 的数据库
- 如果无法访问站点 A 的数据库,则部署在站点 A 的应用程序应使用站点 B 的数据库(作为辅助数据库)
- 一旦站点 A 的数据库启动,部署在站点 A 的应用程序应该再次开始使用站点 A 的数据库(作为主数据库)
同样,它应该适用于站点 B 的应用程序。对于站点 B 的应用程序,应主要使用站点 B 的数据库(作为主数据库)和站点 B 的数据库(作为辅助数据库)。
注意:当相应站点的数据库启动时,该站点(部署它的站点)上的应用程序应再次开始使用该数据库,以避免通过 WAN 进行不必要的通信。
grails 是否提供任何这样的支持,我们可以指定两个数据源,一个作为主要数据源,另一个作为次要数据源(仅在无法访问主要数据源的情况下使用。)?
如果没有这样的机制,那么我们需要不断检查主数据源是否启动并运行,否则切换到似乎根本不合适的辅助数据源并且不想选择这个选项。