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

标签 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 在延迟后重新连接?也许尝试使用退避计时器多次重新连接?或者有更好的方法来处理这个问题吗?

最佳答案

您的 HA 设置将在未来给您带来无限的痛苦。使用数据库层复制代替 block 设备层复制; MySQL Proxy就是为了做到这一点而设计的。

关于mysql - 如何在故障转移期间延迟 ActiveRecord MySQL 重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9321226/

相关文章:

ruby-on-rails - 命令适用于 bash 但不适用于 cron

javascript - rails 5 : hide navigation drop-down on click

ruby-on-rails - 如何使用 ActiveRecord 按多个类别过滤产品?

ruby-on-rails - Activerecord 组不工作

ruby-on-rails - Where NOT IN () on a join?

android - 自定义列表查看多个项目选择

java - 无法让项目显示在文本字段中

mysql - 如何备份 MySQL 数据库?

MySQL 分组依据包括空行

ruby-on-rails - elasticsearch 与破折号完全匹配