共用方式為


評估角色切換期間的服務中斷(資料庫鏡像技術)

在角色切換期間,資料庫鏡像服務逾期的時間量取決於角色切換的類型和角色切換的原因。

  • 在自動故障轉移中,兩個因素會造成服務中斷的時間:首先是鏡像伺服器辨識主伺服器實例失敗所需的時間,也就是錯誤偵測時間,然後是故障轉移資料庫所需的時間,即故障轉移時間。

  • 對於強制服務作業,雖然發生失敗,但偵測和回應失敗取決於人類回應能力。 不過,估計服務的潛在中斷僅限於估計發出強制服務命令之後鏡像伺服器切換角色的時間。

    備註

    若要縮短偵測特定條件所需的時間,例如某些類型的錯誤,您可以定義這些條件的警示。

  • 手動故障轉移時,只需要考慮在發出故障轉移命令後進行資料庫故障轉移所需的時間。

錯誤偵測

系統注意到錯誤的時間取決於錯誤的類型;例如,幾乎會立即注意到網路錯誤,同時注意到未回應的伺服器需要 10 秒(預設逾時)。

如需有關在資料庫鏡像會話期間可能導致失敗的錯誤資訊,以及具備自動故障轉移的高安全性模式中的逾時偵測,請參閱 資料庫鏡像期間的可能失敗

故障轉移時間

故障轉移時間主要包括前一個鏡像伺服器在故障轉移過程中需要前進處理重做佇列中剩餘的任何日誌的時間,加上一段簡短的額外時間(如需了解鏡像伺服器如何處理日誌記錄的詳細資訊,請參閱 資料庫鏡像(SQL Server))。 如需估計故障轉移時間的資訊,請參閱本主題稍後的「估算故障轉移重做率」。

這很重要

如果在建立索引或數據表之後變更的交易期間發生故障轉移,則故障轉移可能需要比平常更長的時間。 例如,在以下一系列作業中故障轉移可能會增加故障轉移時間:BEGIN TRANSACTION、在資料表上建立索引 (CREATE INDEX),以及將資料插入資料表 (SELECT INTO)。 在這類交易過程中,故障轉移時間可能增加,此情況會持續到使用 COMMIT TRANSACTION 或 ROLLBACK TRANSACTION 語句完成交易為止。

重做佇列

向前滾動資料庫涉及套用鏡像伺服器上目前的重做佇列中的所有日誌記錄。 重做佇列包含已寫入鏡像伺服器上的磁碟,但尚未在鏡像資料庫向前復原的記錄檔記錄。

資料庫的故障轉移時間取決於鏡像伺服器在重播佇列中推進記錄的速度,而這速度則主要取決於系統硬體和目前的工作負載。 主體資料庫可能會變得如此忙碌,主體伺服器會將記錄傳送至鏡像伺服器的速度比向前復原記錄更快。 在此情況下,當鏡像伺服器向前復原重做佇列中的記錄時,故障轉移可能需要相當長的時間。 若要瞭解重做佇列的目前大小,請使用資料庫鏡像性能物件中的 Redo Queue 計數器。 如需詳細資訊,請參閱 SQL Server 資料庫鏡像物件

估計故障轉移重演速率

您可以使用生產資料庫的測試複本來測量向前復原日誌記錄的時間量,該時間量即為重做速率

故障轉移期間估算向前滾動時間的方法取決於鏡像伺服器在重做階段使用的執行緒數量。 線程數目取決於下列各項:

  • 在 SQL Server Standard 中,鏡像伺服器一律會使用單一執行緒來向前復原資料庫。

  • 在 SQL Server Enterprise 中,少於五個 CPU 的電腦上的鏡像伺服器也只會使用單一線程。 使用五個以上的CPU時,鏡像伺服器會在故障轉移期間,將其向前復原作業分散到多個線程之間(這稱為 平行重做)。 平行重做已被優化為每四個CPU使用一個線程。

估計 Single-Threaded 重做率

針對單個線程重做,在故障轉移期間向前復原鏡像資料庫所需的時間大約與還原記錄備份所花費的時間大致相同,才能向前復原相同的記錄量。 若要預估故障轉移時間,請在您想要執行鏡像的環境中建立測試資料庫。 然後從生產資料庫取得記錄備份。 若要測量該日誌備份的重做速率,請計算將該日誌備份以 NORECOVERY 選項還原到測試資料庫所需的時間。

一旦您知道鏡像伺服器的重做速率,您就可以將從 Redo Queue 效能計數器測得的鏡像上要重做的目前記錄量除以重做速率,以估算在指定時間點完成對資料庫的故障轉移所需的時間。 在正常情況下,如果鏡像伺服器可以跟上主要伺服器的負載,重做佇列會很小或接近零,而且故障轉移只需幾秒鐘。

估計平行重做速率

在 SQL Server Enterprise 中,平行重做已優化,以針對每四個 CPU 使用一個線程。 若要估計平行重做作業的復原時間,存取執行中的測試系統比起測試資料庫更為準確。 在監視鏡像伺服器上的重做佇列時,增加主體伺服器上的負載。 在正常作業中,重做佇列接近零。 增加主伺服器上的負載,直到重做佇列開始持續成長為止;此時系統達到重做速率的上限,而 Redo Bytes/sec 性能計數器代表最大重做速率。 如需詳細資訊,請參閱 SQL Server 資料庫鏡像物件

估算自動故障切換過程中服務中斷的影響程度

下圖說明錯誤偵測和故障轉移時間如何影響在 Partner_B 上完成自動故障轉移所需的整體時間。 故障轉移需要時間才能向前復原資料庫(重做階段),加上少量的時間讓資料庫上線。 回溯階段包括回溯任何未提交的交易,會在新的主體資料庫上線後發生,並在故障切換期間持續。 資料庫可在復原階段期間使用。

錯誤偵測和故障轉移時間

另請參閱

資料庫鏡像操作模式在資料庫鏡像會話期間的角色切換(SQL Server)監控資料庫鏡像(SQL Server)