【问题标题】:How to delay ActiveRecord MySQL reconnect during a failover如何在故障转移期间延迟 ActiveRecord MySQL 重新连接
【发布时间】: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


    【解决方案1】:

    您的 HA 设置将来会给您带来无穷无尽的痛苦。使用数据库层复制而不是块设备层复制; MySQL Proxy 就是为此而设计的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-25
      • 2015-03-21
      • 2012-03-19
      • 1970-01-01
      • 2018-10-20
      • 2020-08-07
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多