Sql-Server

SQL Server 升級 - 一種新的升級方法

  • August 30, 2018

Microsoft 的SQL Server 升級技術指南引用了兩種升級路徑:就地升級和並行升級。

我沒有看到第三個明顯更可行/方便的選項,即對伺服器/SQL Server 的複製版本進行就地升級。這就是我的意思:為什麼不複製有問題的伺服器,然後執行就地升級,如果一切順利,那麼可以簡單地創建一個別名,然後讓所有應用程序和使用者自動重新路由到新伺服器. 這有什麼缺點嗎?有什麼我沒有看到的嗎?使用別名來重定向使用者和應用程序不明智嗎?

假設:

  1. 我假設這是一個簡單的升級案例:沒有鏡像、沒有複製等。這只是一個帶有許多數據庫需要升級的伺服器。
  2. 我假設支持直接升級。具體來說,在這種情況下,它是從 SQL Server 2008R2 到 2016。

由於 SQL Server 的主要原則之一,事務一致性,在執行複製操作時很難正確執行,我建議不要使用複製以按照您建議的方式執行升級。在 SQL Server 服務正在執行並接受客戶端連接時複製基礎電腦可能會導致複製包含無效數據。如果您可以在 SQL Server 服務關閉時創建電腦的複製,那麼您建議的解決方案可能是執行升級的可行方法。話雖如此,我傾向於使用 VM/SAN 複製,因為它出錯的可能性非常高。任何值錢的 DBA 都會告訴你,不必要的風險是不可接受的。

話雖如此,使用 DNS 別名是從伺服器中抽像出機器名稱的絕佳方式,並且是 Windows 故障轉移群集用於將客戶端定向到群集 SQL Server 安裝中的活動節點的方法。

在您擁有 DNS 別名的情況下,實現升級的高級步驟如下所示:

  1. 確保 DNS 別名具有較短的 TTL 值,這將允許客戶端足夠快地“看到”別名指向的 IP 地址的更改,以便在所需的時間段內連接到新機器。我會考慮1分鐘。
  2. 根據需要使用最新版本的 Windows 和 SQL Server 創建新機器或 VM。
  3. 備份舊伺服器上的數據庫,然後將它們還原到新伺服器。
  4. 針對新伺服器測試所有軟體/網站/應用程序以確保兼容性。
  5. 一旦測試完成,並且您對新伺服器感到滿意,請禁用與舊伺服器的使用者連接,以確保沒有人進行在新伺服器上看不到的更新。
  6. 對舊伺服器上的數據庫進行最終備份,然後將這些數據庫恢復到新伺服器。
  7. 修改 DNS 別名以指向新伺服器的 IP 地址。

此時客戶端應用程序應該能夠使用新伺服器,而無需在客戶端進行任何更改。

上述步驟假設您有一個足夠長的升級視窗,可以對升級過程中涉及的數據庫執行備份和恢復。如果您沒有升級視窗,即您需要 99.999% 的正常執行時間,您將需要考慮使用鏡像、日誌傳送或故障轉移集群來最大限度地減少切換到新機器期間的停機時間。

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