【发布时间】:2012-02-17 09:58:07
【问题描述】:
我们有一个 Rails 3.1.3 应用程序,通过 mysql2 gem 连接到 MySQL。标准配置我们还有少数 Resque 工作人员执行后台工作。我们指向的数据库主机名(在 database.yml 中)实际上是一个虚拟 IP(VIP),它指向 node1 或 node2。
在幕后,两个 MySQL 服务器(节点)设置在高可用性配置中。数据文件夹通过 DRBD 复制,mysqld 仅在“活动”节点上运行。当集群检测到 node1 不可用时,在 node2 上启动 mysqld 并将 VIP 指向它。
如果您想了解更多有关具体设置的详细信息,与this MySQL HA cookbook 非常相似。
问题如下: 发生故障转移时,大约需要 30-60 秒才能完成,在此期间没有可用的 MySQL 服务器。当前正在运行的任何 Resque 作业都会严重失败。
问题如下:我们如何告诉 ActiveRecord 在延迟后重新连接?也许尝试使用退避计时器进行多次重新连接?或者有没有更好的处理方法?
【问题讨论】:
标签: mysql ruby-on-rails activerecord high-availability