首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RDS故障转移上的Rails Postgres重新连接

RDS故障转移上的Rails Postgres重新连接
EN

Stack Overflow用户
提问于 2016-04-12 19:29:34
回答 1查看 1.8K关注 0票数 9

我有一个带有Postgres数据库的Rails应用程序,在AWS下,它具有多属性的体系结构。RDS使用的HA体系结构是主/从结构,它们为服务提供一个指向当前主服务器的端点。

每当出现数据库故障转移时,活动记录将继续尝试连接到同一台服务器,而不是重新尝试连接,以便为主服务器获取新的IP。

是否有一种方法可以为ActiveRecord::StatementInvalid: PG::ConnectionBad: PQsocket() can't get socket descriptor错误创建一个“全局”补救方案,该错误只是运行ActiveRecord::Base.connection_pool.disconnect!,从而使下一个查询工作正常?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-09 15:39:39

通过向postgres_adapter应用猴子补丁,我能够在故障转移事件之后重新连接活动记录。

lib/core_ext/active_record/postgresql_adapter.rb

代码语言:javascript
运行
复制
require 'active_record/connection_adapters/postgresql_adapter'

class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
  private
  def exec_no_cache(sql, name, binds)
    log(sql, name, binds) { @connection.async_exec(sql, []) }
  rescue ActiveRecord::StatementInvalid => e
    if e.to_s.include?('PG::ConnectionBad')
      ActiveRecord::Base.connection_pool.disconnect!
    end
    raise e
  end
end
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36582380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档