自動容錯移轉

只有在高安全性模式下搭配見證執行的資料庫鏡像工作階段才支援自動容錯移轉 (「具有自動容錯移轉的高安全性模式」)。在具有自動容錯移轉的高安全性模式下,一旦資料庫同步處理後,如果主體資料庫無法使用,就會進行自動容錯移轉。自動容錯移轉會使鏡像伺服器接替主體伺服器的角色,使其資料庫副本連接成為主體資料庫。同步處理資料庫的需求可避免容錯移轉期間發生資料遺失的狀況,因為主體資料庫上認可的每一筆交易也會在鏡像資料庫上認可。

為了讓自動容錯移轉能夠提高可靠性,鏡像與主體資料庫必須位於不同的電腦上。

自動容錯移轉所需的條件

自動容錯移轉必須符合下列條件:

  • 資料庫鏡像工作階段必須在高安全性模式下執行而且必須擁有見證。如需詳細資訊,請參閱<同步資料庫鏡像 (高安全性模式)>。

  • 鏡像資料庫必須已經完成同步處理。如此可確保所有傳送到鏡像伺服器的記錄都已寫入磁碟中。

  • 主體伺服器已經中斷與資料庫鏡像組態其他元件的通訊,但鏡像與見證仍保有仲裁。不過,如果所有的伺服器執行個體都失去通訊,而見證與鏡像伺服器稍後重新取得通訊,則不會發生自動容錯移轉。

    [!附註]

    如需詳細資訊,請參閱<仲裁:見證如何影響資料庫可用性>。

  • 鏡像伺服器已偵測到主體伺服器的遺失。

    鏡像伺服器偵測主體伺服器錯誤的方式需視其為硬性或軟性錯誤而定。如需詳細資訊,請參閱<資料庫鏡像期間可能發生的失敗>。

自動容錯移轉如何運作

在前述條件下,自動容錯移轉會起始下列動作順序:

  1. 如果主體伺服器仍在執行,就會將主體資料庫的狀態變更為 DISCONNECTED,並中斷主體資料庫中所有用戶端的連接。

  2. 見證伺服器與鏡像伺服器會將主體伺服器登錄為無法使用。

  3. 如果在重做佇列中有任何記錄正在等待,則鏡像伺服器會完成鏡像資料庫的向前復原。

    [!附註]

    套用記錄所需時間量視系統的速度、最近的工作負載,以及重做佇列中的記錄量而定。

  4. 先前的鏡像資料庫會連線成為新的主體資料庫,而復原作業會儘快回復所有未認可的交易來加以清除。鎖定會隔離這些交易。

  5. 當先前的主體伺服器重新加入工作階段,它會認定其容錯移轉夥伴此時已擁有主體角色。先前的主體伺服器會接替鏡像的角色,並使其資料庫成為鏡像資料庫。新的鏡像伺服器會儘快將新的鏡像資料庫與主體資料庫進行同步處理。新鏡像伺服器重新同步處理資料庫後,就可以再次容錯移轉,但是方向會相反。

下圖顯示自動容錯移轉的單一執行個體。

自動容錯移轉

一開始,三部伺服器都已連接 (也就是工作階段具有完整的仲裁)。Partner_A 是主體伺服器,Partner_B 是鏡像伺服器。Partner_A (或 Partner_A 上的主體資料庫) 變得無法使用。見證與 Partner_B 兩者皆認定主體已無法使用,且工作階段會重新取得仲裁。Partner_B 會成為主體伺服器,並使其資料庫副本成為新的主體資料庫。最後,Partner_A 重新連接到工作階段,並發現 Partner_B 此時已擁有主體角色。Partner_A 會接替鏡像角色。

容錯移轉之後,用戶端必須重新連接到目前的主體資料庫。如需詳細資訊,請參閱<將用戶端連接至鏡像資料庫>。

[!附註]

在容錯移轉發生時,凡是已利用 Microsoft 分散式交易協調器準備好但尚未認可的交易,都會在資料庫完成容錯移轉後被視為已中止。

使用 SQL Server Management Studio 停用自動容錯移轉

若要停用自動容錯移轉,請開啟 [資料庫屬性][鏡像] 頁面,並選取下列其中一項來變更作業模式:

  • 不具有自動容錯移轉的高安全性 (同步)

    在此模式下,資料庫會繼續進行同步處理,而且可以手動容錯移轉。如需詳細資訊,請參閱<同步資料庫鏡像 (高安全性模式)>。

  • 高效能 (非同步)

    在此模式下,鏡像資料庫可能會稍微落後主體資料庫,而且無法進行手動容錯移轉。如需詳細資訊,請參閱<非同步資料庫鏡像 (高效能模式)>。

若要變更作業模式

使用 Transact-SQL 停用自動容錯移轉

在資料庫鏡像工作階段的任何時間點上,資料庫擁有者可以透過關閉見證來停用自動容錯移轉。

若要關閉見證