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