2012-02-17 65 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被設計來做到這一點。