Sql-Server

避免 Microsoft SQL Server 在重新啟動期間停機

  • September 17, 2020

我們正在執行 SQL Server Standard 2016。不時需要安裝 Microsoft 更新並且伺服器將重新啟動。

我們被要求研究在重新啟動期間保持數據庫可用。

因此,出於性能原因,我們不需要其他數據庫伺服器,數據庫應該“簡單地”在正常 Windows 更新的重新啟動過程中可用。

在這種情況下,首選設置是什麼?

如果您有正在執行的查詢或打開的事務,SQL Server 無法將該查詢或事務移至另一台伺服器。

當您的 SQL Server 實例(我們稱為實例 A)重新啟動時:

  1. 正在執行的查詢將被中止
  2. 打開的、未送出的事務將被回滾
  3. 新查詢將獲得連接超時

我們無法修復#1 和#2,但我們可以通過幾種不同的方式幫助#3。

如果應用程序需要寫入,您可以通過使用高可用性功能(如故障轉移集群、Always On 可用性組或數據庫鏡像)來減少停機時間。這使您可以提前修補備用伺服器(實例 B)。當需要修補實例 A 時……你不需要。您只需從實例 A(未修補)故障轉移到實例 B(已修補)。您的使用者會遇到 5-60 秒的短暫中斷,具體取決於伺服器大小、正在執行的事務、伺服器調整等。然後,您可以花時間修補實例 A,假設伺服器大小相同,您甚至不需要失敗。您可以繼續在實例 B 上執行,直到下次進行修補。

如果應用程序只需要讀取,您可以使用橫向擴展功能,例如Always On 可用性組上的只讀副本。根據您配置 AG 和應用程序的方式,可能需要更改連接字元串,例如指向 AG 偵聽器並指定只讀意圖,而不是單獨指定實例 A 的名稱。

如果應用程序混合執行讀取和寫入操作,並且您願意在應用程序端投入一些工作,那麼您可以使用 Stack Overflow 使用的技術在故障轉移期間保持線上。

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