如何在故障转移期间延迟ActiveRecord MySQL重新连接

时间:2012-02-17 00:27:11

标签: mysql ruby-on-rails activerecord high-availability

我们有一个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在延迟后重新连接?也许尝试与退避计时器重新连接几次?或者有更好的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您的HA设置将在未来给您带来无限痛苦。使用数据库层复制而不是块设备层复制; MySQL Proxy旨在实现这一目标。