我有一个Rails / ActiveRecord应用程序偶尔会针对应用程序的模型执行一些繁重的只读查询,以进行临时管理/报告。我目前使用seamless_database_pool gem将这些查询发送到单独的只读副本数据库端点,因此这些查询不会向主数据库添加负载。但是,此设置会在副本上添加一个持续的运行时依赖性,从而降低了我的应用程序的可用性 - 每当副本脱机进行维护时,整个站点都会在任何请求上返回503错误,即使请求永远不会查询只读副本。
如何在不影响应用程序可用性的情况下,在ActiveRecord模型上连接到只读报告查询的只读副本?是否有另一个数据库适配器gem明确处理这个用例?
或者,(甚至更好)是否可以使用ActiveRecord直接完成此操作?我知道可以通过调用#establish_connection
连接到单独的数据库,以便将特定的模型引导到所有控制器上的单独数据库操作,但对于我的用例,我需要连接到所有模型的单独数据库,但仅限于特定控制器操作。
答案 0 :(得分:0)
我设法通过修改seamless_database_pool
gem来解决此问题,以便在仅使用主连接时放松对读取副本的运行时依赖性。请参阅相关的issue和PR。