2012-02-17 66 views
0

我们有一个Rails 3.1.3应用程序,通过mysql2 gem连接到MySQL。标准配置。我们还有一些Resque工作人员执行后台工作。我们指向的DB主机名(在database.yml中)实际上是指向node1或node2的虚拟IP(VIP)。如何在故障转移期间延迟ActiveRecord MySQL重新连接

在幕后,两个MySQL服务器(节点)在高可用性配置中设置。数据文件夹通过DRBD进行复制,mysqld只在“活动”节点上运行。当集群检测到node1不可用时,它会在node2上启动mysqld并将VIP指向它。

如果你想了解更多关于特定设置的细节,它与this MySQL HA cookbook非常相似。

以下是问题:发生故障切换时,大约需要30-60秒才能完成,在此期间没有可用的MySQL服务器。任何当前正在运行的Resque作业都会失败。

以下是问题:我们如何告诉ActiveRecord延迟后重新连接?也许尝试几次与退避计时器重新连接?还是有更好的方法来处理这个问题?

回答

1

您的医管局设置将在未来给您带来无限的痛苦。使用数据库层复制而不是块设备层复制; MySQL Proxy被设计来做到这一点。