Sql-Server

在分佈式可用性組中混合使用 SQL Server 2016 和 2017

  • November 22, 2019

我有一個舊的可用性組,由 2 個 SQLServer 2016 實例(WSFC 中的 2 個 Windows 2016 伺服器)組成,我還有 2 個新的 SQLServer 2017 實例(2 個 Windows Server 2016),我最初想加入 2016 AG。

這是一個 0 停機時間遷移場景,一旦數據庫與 2017 年的數據庫對齊,2016 年的伺服器就應該被關閉。

令我非常失望的是,我發現無法將 2017 實例加入現有的 2016 AG,但我無法承擔停止生產、獲取和恢復備份、等待數據庫同步、更改名稱(可能新 AG 的 ip) 以匹配原始 AG,除非作為最後一個資源…

然後我遇到了名為“Distributed AG Group”的 2016 年新服務,我開始考慮將它用於我的遷移場景……基本上是這樣的:

  1. 使用 SQL 2017 實例創建新 AG
  2. 在原 2016 AG 和新 2017 AG 之間創建分佈式 AG(應用程序繼續連接到 2016 的偵聽器)
  3. 等待 DB 同步在 2017 AG 中發生
  4. 以2017年AG為主
  5. 從分佈式 AG 中移除 2016 AG(應用程序停機時間短)
  6. 更改2017年監聽器的名稱和ip(應用程序再次啟動)
  7. 移除分佈式 AG

可行嗎?我可以在分佈式 AG 中混合 2016 年和 2017 年的 AG 嗎?還是有(顯然!)我缺少的東西,並且有一種更簡單或更合適的方法來製作它?

可行嗎?我可以在分佈式 AG 中混合 2016 年和 2017 年的 AG 嗎?

我已經從Allan Hirt SQL Server MVP 和 HA/DR Guru 那裡確認,這確實是可能的並且受支持。所以請繼續,可能會出現混淆,因為在 BOL 中提到了兩個不同的東西。我將強調兩者

引用分佈式可用性組文件

分佈式可用性組跨越多個可用性組,每個可用性組位於其自己的底層 WSFC 群集上,分佈式可用性組是僅限 SQL Server 的構造。這意味著容納各個可用性組的 WSFC 群集可以具有不同的主要版本的 Windows Server。SQL Server 的主要版本必須相同

因此,雖然 DAG 中可以有不同的 Windows 伺服器版本,但 DAG 中不能有不同的 SQL Server 版本。從這裡看起來版本應該是相同的,但是如果您再次查看升級可用性組實例,它會說

要使用 AG 遷移到新版本的 SQL Server 實例,唯一支持的方法是分佈式 AG,它在 SQL Server 2016 Enterprise Edition 或更高版本中。

現在你應該相信這個而不是前一個。

還是有(顯然!)我缺少的東西,並且有一種更簡單或更合適的方法來製作它?

除了分佈式 AG,我會在這裡考慮 2 種方法

  1. 並排升級

我相信事務日誌傳送在這裡應該有所幫助。

  • 創建安裝了 SQL Server 2017 的新 WSFC–無停機時間
  • 暫時不要創建 AG
  • 從 SQL Server 2016 到 SQL Server 2017 的日誌記錄數據庫。–無停機
  • 在“切換”期間停止日誌傳送並使 SQL Server 2017 上的數據庫聯機。–小停機時間
  • 現在將應用程序指向這個新數據庫。
  • 繼續在新的 SQL Server 2017 上配置 AG。

我知道如果您有大型數據庫,配置日誌傳送會有些痛苦,但這是我認為最好的。

  1. 就地升級

滾動升級可用性組。升級可用性組實例

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