Sql-Server

SQL Server 2016 Standard Edition 的故障轉移策略

  • August 13, 2019

我正在使用 SQL Server 2016 標準版。

我有兩台數據庫伺服器,SQL01 和 SQL02,只有一個數據庫,我正在利用事務複製將數據從 SQL01 帶到 SQL02。使用者應該能夠隨時從兩個伺服器中的數據庫讀取數據,並且事務複製允許這樣做。

如果出現這種情況(更新檔/維護),我正在考慮一種故障轉移策略來故障轉移到 SQL02,然後再回到 SQL01。

我知道事務複製不是HA解決方案,但由於我使用的是 SQL Server 2016 標準版,因此我只有日誌傳送/數據庫鏡像選項。

SQL01 中更新檔/維護的目前故障轉移策略:

  • 從 SQL01 到 SQL02 的事務複製。
  • 因此將應用程序指向 SQL02。現在新數據進入 SQL02。
  • 要使 SQL01 與 SQL02 保持同步,請從 SQL02 恢復數據庫的完整備份並保持 SQL01 初始化。
  • 實現從 SQL02 到 SQL01 的日誌傳送。

對我來說,這看起來像是我可以使用的解決方案。我看到的可能問題是:

  • 我的數據庫是 2TB,所以在 SQL02 中備份需要 1 小時,在 SQL01 中恢復需要 3 小時。也許我可以通過對 SQL02 使用前一天晚上的完整備份並在更早的時間恢復它來避免這種情況。請評論是否可以這樣做。
  • 另一個問題是,如果我有 SQL02 數據庫的正常事務日誌備份(不是來自日誌傳送),是否也會通過日誌傳送恢復?

除了這些,您還看到其他問題嗎?

請添加您的建議。

與您的複制解決方案分開,可以為您的發布者的 HA 使用故障轉移集群實例基本可用性組

或者,如果您喜歡模糊的複制解決方案,您可以實現雙向事務複製,它類似於點對點複製,但較舊並且在標準版上可用。

除了傳統之外,是否還有其他原因需要 SQL01 恢復為“主要”?你可以只做一次翻轉,並跳過短期日誌傳送的混亂混亂:

  1. 原始狀態:SQL01 上的主數據庫,設置為將所有表複製到 SQL02。
  2. 當您對 SQL02 進行維護時,複製將在 SQL02 關閉時將分發數據庫中的更改排隊,並在它重新聯機時趕上。
  3. 要對 SQL01 進行維護,請執行以下操作:
  • 暫停/停止應用程序
  • 中斷複製
  • 將應用程序重定向到 SQL02
  • 對 SQL01 進行維護
  • 備份 SQL01 後,重新建立從 SQL02 到 SQL01的複制,因為 SQL02 現在是“主”

您現在的最終狀態是:SQL02 上的主數據庫,設置為將所有表複製到 SQL01

現在對於 2TB 的數據庫,重新建立複製(任一方向)不會很快或微不足道;我建議從備份開始,而不是嘗試推送完整快照。

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