Sql-Server

AlwaysOn AG 與 FCI

  • February 5, 2018

AlwaysOn 可用性組(AG) 和AlwaysOn 故障轉移集群實例(FCI) 的 MS 文件中,我看到了以下模式:

  1. FCI 用於 HA 場景。
  2. 與主副本位於同一位置的 AG 同步輔助副本適用於 HA 方案。
  3. 不同數據中心的 AG 非同步輔助副本用於 DR 場景。

這是討論此問題的範例 MS 連結

由於選項 #1 和 #2 都適用於 HA 方案,我如何在它們之間做出決定?如果 MS 發布了 #1 和 #2 的成本和 RPO/RTO 指標,那麼很容易決定我想要哪個。

或者也許有一種不同的方式來理解這些選項之間的投資回報率差異。例如,也許選項 #2 最適合 VLDB,而選項 #1 最適合非常高的事務量。我不知道。

那麼,DBA 用於在選項#1 和#2 之間進行選擇的選擇標準是什麼?

更複雜的是,我知道選項 #1 和 #2 可以組合!什麼時候結合這兩個選項是明智的?什麼時候將這兩個選項結合起來毫無意義?我知道當這些選項組合在一起時,AG 不再支持自動故障轉移。這是有趣的瑣事,但沒有回答我的問題。

順便說一句,我打算將我的最終解決方案預配到 Azure IaaS。如果我使用 Always On FCI,我可能會使用 Storage Spaces Direct (S2D) 創建準 SAN。

更新

我找到了兩篇文章進行了比較。第一個是MS 文件,另一個是選擇正確的可用性技術。兩者都有這樣的圖表:

╔═════════════════════════════╦══════════════════════════╗
║ FCI                         ║ AG                       ║
╠═════════════════════════════╬══════════════════════════╣
║  * Server Level             ║  * Database Level        ║
╠═════════════════════════════╬══════════════════════════╣
║  * Requires shared storage  ║  * Uses direct           ║
║     (SAN or Storage Spaces  ║     attached storage     ║
║     Direct)                 ║                          ║
╠═════════════════════════════╬══════════════════════════╣
║  * RTO from 30              ║  * RTO typically less    ║
║     seconds to 20 minutes.  ║     than 30 seconds      ║
╠═════════════════════════════╬══════════════════════════╣
║  * RPO: no data loss.       ║  * RPO: ???              ║
╠═════════════════════════════╬══════════════════════════╣
║  * Only Passive Secondaries ║  * Active or Passive     ║
║                             ║     Secondaries          ║
╠═════════════════════════════╬══════════════════════════╣
║  * One SQL Server           ║  * Multiple SQL Server   ║
║     instance/license        ║     instances / licenses ║
╚═════════════════════════════╩══════════════════════════╝

這篇文章沒有評論 AG RPO,但我在別處讀到,從同步輔助副本恢復時沒有數據失去。我不知道這是不是真的,我不知道非同步輔助副本的 RPO 可能是什麼。在 Azure 中,有一個 AG 資源需要使用 AG 創建兩個域控制器(無論您是否有自己的域控制器)。我不知道 Azure FCI 是否有同樣嚴格的要求。

最重要的是——我仍然不知道為什麼將這兩種技術結合起來很有價值。我只讀到它“提高”或“最大化”可用性。這是 IMO 的模糊主張。

更多瑣事:我還發現了一個討論,建議應該避免兩個節點的 FCI

一般來說,由於上面已經提到的各種原因,與 AG 相比,FCI 更有利。當然,2 節點 FCI 非常棒,但不應該直接建構在儲存空間之上,因為已知 S2D 在少於 4 個節點的部署中會出現問題(來源)。

對於 Azure,我寧願堅持使用設計為在 2 或 3 個節點場景中工作的 VSAN,例如(範例)。

以下是有關 FCI 與 AG 的更多資訊,您可能會發現它們也很有用

對於 HA 目的,這取決於每個客戶的要求和需要,即兩者(選項 1 和 2)中哪個是更好的選擇。下面提供了通常檢查的各種標準:

如果它是標準版,那麼您需要使用 FCI(選項 1)。

如果滿足以下所有條件,則使用 AG(同步 - 選項 2):

  • 擁有 SQL Server 企業版(自 SQL Server 2016 起,標準版也提供 Basic AG)
  • 您需要並具有儲存數據庫文件的多個副本的儲存容量,以提高安全性。儲存是 FCI 中的單點故障,因為它只有一組數據文件,而 AG 中有多個。
  • 檢查網路和磁碟延遲,以查看從伺服器 A 的磁碟到伺服器 B 的磁碟的總延遲是否在您的應用程序可接受的標準範圍內,因為事務不會返回到應用程序,直到它在輔助 (B) 伺服器上送出。
  • 請記住,伺服器級別的對像不會自動從伺服器 A 同步到伺服器 B,因為系統數據庫沒有同步。因此,您要麼手動保持參與伺服器之間的所有伺服器級對象同步,要麼部署一個自動化解決方案,該解決方案將保持在 2 個伺服器之間同步此類伺服器級對象。
  • 你有足夠的專業知識來處理 AG 的運營問題。AG 比 FCI 複雜​​得多,因此您需要準備好解決由 AG 引起的任何問題,尤其是性能問題。

要麼

如果您需要將報告查詢(或備份)解除安裝到輔助伺服器上以減少主實例上的負載,請使用 AG。

我會結合(1 和 3)或(2 和 3)用於 HA 和 DR 目的,其中 1 或 2 將提供 HA 解決方案,3 將是 DR 解決方案。因此,最好將 1&3 或 2&3 結合起來,以獲得完整的 HA 和 DR 策略。

但我不確定將 1 和 2 結合起來是否有任何好處。

引用自:https://dba.stackexchange.com/questions/196793