資料庫鏡像概觀

「資料庫鏡像」主要是一套增加資料庫可用性的軟體方案。鏡像是以每個資料庫為基準實作,只適用於使用完整復原模式的資料庫。簡單與大量記錄復原模式不支援資料庫鏡像。因此,所有的大量作業永遠都是完整記錄作業。資料庫鏡像適用於任何支援的資料庫相容性層級。

[!附註]

您無法鏡像 master、msdb、tempdb 或 model 資料庫。

資料庫鏡像會維護單一資料庫的兩份副本,而這兩份副本必須位於不同的 SQL Server Database Engine 伺服器執行個體上。這些伺服器執行個體通常位於不同位置的電腦上。其中一個伺服器執行個體做為用戶端的資料庫 (「主體伺服器」(Principal Server))。而根據鏡像工作階段的組態和狀態,另一個執行個體會做為熱待命伺服器或暖待命伺服器 (「鏡像伺服器」(Mirror Server))。同步處理資料庫鏡像工作階段時,資料庫鏡像會提供熱待命伺服器來支援快速容錯移轉,因而不會遺失任何已認可的交易資料。當工作階段無法同步處理時,鏡像伺服器通常會當做暖待命伺服器使用 (可能發生資料遺失)。

資料庫鏡像的優點

資料庫鏡像是一種簡單的策略,提供了下列優點:

  • 增加資料保護。

    資料庫鏡像可提供完整或近乎完整的資料備援性,端視作業模式是高安全性模式或高效能模式而定。如需詳細資訊,請參閱本主題後面的「作業模式」。

    在 SQL Server 2008 Enterprise 或更新版本上執行的資料庫鏡像夥伴伺服器會自動嘗試解決會阻止讀取資料頁面的特定類型錯誤。無法讀取頁面的夥伴會向其他夥伴要求全新副本。如果這個要求成功,無法讀取的頁面就會使用副本取代,這通常會解決錯誤。如需詳細資訊,請參閱<資料庫鏡像工作階段期間自動修復頁面>。

  • 提高資料庫的可用性。

    發生損毀事件時,在具有自動容錯移轉的高安全性模式下,自動容錯移轉便會迅速將資料庫的待命副本變成線上狀態 (無資料遺失)。在其他作業模式下,資料庫管理員則可選擇對資料庫的待命副本進行強制服務 (可能發生資料遺失)。如需詳細資訊,請參閱本主題稍後的「角色切換」。

  • 提升實際執行的資料庫在升級期間的可用性。

    若要將鏡像資料庫的停機時間減至最少,您可以循序升級參與資料庫鏡像工作階段的 SQL Server 執行個體。這只需要承擔單一容錯移轉的停機時間。這種升級形式稱為「輪流升級」(Rolling Upgrade)。如需詳細資訊,請參閱<如何:利用鏡像資料庫的最少停機時間,在系統上安裝 Service Pack>。

資料庫鏡像的運作方式

主體和鏡像伺服器會在「資料庫鏡像工作階段」內互相通訊,並如同「夥伴」般彼此合作。這兩個夥伴在工作階段中扮演互補的角色:「主體角色」(Principal Role) 和「鏡像角色」(Mirror Role)。在任何時間內,一定有一個夥伴扮演主體角色,而另一個夥伴就扮演鏡像角色。我們會以每個夥伴所「擁有」的目前角色來描述它們,擁有主體角色的夥伴稱為「主體伺服器」,其資料庫副本就是目前的主體資料庫;而擁有鏡像角色的夥伴則稱為「鏡像伺服器」,其資料庫副本就是目前的鏡像資料庫。在實際執行環境中部署資料庫鏡像時,主體資料庫就是「實際執行的資料庫」。

資料庫鏡像涉及將主體資料庫上發生的每一項插入、更新和刪除作業,儘快「重做」到鏡像資料庫上。完成重做的方式是將使用中交易記錄檔記錄的資料流傳送到鏡像伺服器,再由鏡像伺服器盡快依序將記錄套用到鏡像資料庫。與在邏輯層級運作的複寫不同,資料庫鏡像是在實體記錄層級運作。從 SQL Server 2008 開始,主體伺服器會先壓縮交易記錄檔記錄的資料流,然後再將它傳送至鏡像伺服器。這個記錄檔壓縮作業會在所有鏡像工作階段中進行。

作業模式

資料庫鏡像工作階段可與同步或非同步作業一起執行。在非同步作業下,交易不會等待鏡像伺服器將記錄寫入磁碟,即逕行認可,藉以達到最大效能。在同步作業下,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性。

鏡像作業模式共有兩種。其中一種模式 (「高安全性模式」) 可支援同步作業。在高安全性模式下,當工作階段開始時,鏡像伺服器會儘快將鏡像資料庫與主體資料庫進行同步處理。一旦資料庫同步處理完成之後,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性。

第二種作業模式 (「高效能模式」) 則以非同步方式執行。鏡像伺服器會盡量跟上主體伺服器所傳送的記錄。鏡像資料庫可能會稍微落後主體資料庫。然而,在資料庫之間的間距通常很小。但是,若主體伺服器的工作負載很大,或鏡像伺服器的系統超載時,此差距就會變大。

在高效能模式中,當主體伺服器傳送記錄到鏡像伺服器時,主體伺服器會立即傳送確認給用戶端。它不會等候鏡像伺服器的收條。這表示交易不會等待鏡像伺服器將記錄寫入磁碟,即逕行認可。這種非同步作業可以讓主體伺服器在執行時將交易延遲性降到最低,但必須承擔可能遺失資料的風險。

所有的資料庫鏡像工作階段都只能支援一部主體伺服器和一部鏡像伺服器。這種組態顯示在下圖中。

資料庫鏡像工作階段中的夥伴

具有自動容錯移轉的高安全性模式需要第三個伺服器執行個體,稱為「見證」。與兩位夥伴不同的是,見證並不是為資料庫服務。見證會藉由確認主體伺服器是否已啟動而且可以正常運作,支援自動容錯移轉。只有當鏡像和見證與主體伺服器中斷連接後仍然保持相互連接時,鏡像伺服器才會開始進行自動容錯移轉。

下圖顯示包括見證的組態。

包含見證的鏡像工作階段

如需詳細資訊,請參閱本主題稍後的「角色切換」。

[!附註]

建立新的鏡像工作階段或將見證加入至現有鏡像組態時,會要求所有涉及的伺服器執行相同版本的 SQL Server。不過,當您升級為 SQL Server 2008 或更新版本時,這些相關執行個體的版本可能會不同。如需詳細資訊,請參閱<如何:在升級伺服器執行個體時將鏡像資料庫的停機時間減至最少>。

交易安全性與作業模式

作業模式為同步或非同步作業需視其交易安全性設定而定。如果您以獨佔模式使用 SQL Server Management Studio 來設定資料庫鏡像,系統便會在您選取作業模式時自動設定交易安全性設定。

如果使用 Transact-SQL 來設定資料庫鏡像,您就必須了解設定交易安全性的方式。交易安全性是由 ALTER DATABASE 陳述式的 SAFETY 屬性所控制。在要進行鏡像的資料庫上,SAFETY 不是 FULL 就是 OFF。

  • 如果 SAFETY 選項設為 FULL,在初始同步處理階段之後的資料庫鏡像便為同步作業。如果見證是在高安全性模式下設定,工作階段就會支援自動容錯移轉。

  • 如果 SAFETY 選項設為 OFF,資料庫鏡像便為非同步作業。工作階段將以高效能模式執行,而且 WITNESS 選項也應該設為 OFF。

如需詳細資訊,請參閱<Transact-SQL 設定和資料庫鏡像作業模式>。

角色切換

在資料庫鏡像工作階段的內容中,主體與鏡像角色通常可以用一種稱為角色切換的程序交換。角色切換包括將主體角色傳送給鏡像伺服器。在角色切換中,鏡像伺服器將充當主體伺服器的「容錯移轉夥伴」。發生角色切換時,鏡像伺服器將接替主體角色,並使其資料庫副本變成線上狀態以做為主體資料庫。先前的主體伺服器 (如果有的話) 將會擔任鏡像角色,而其資料庫則會變成新的鏡像資料庫。原則上,各角色可以重複來回切換。

角色切換有下列三種形式。

  • 自動容錯移轉

    這種形式需要使用高安全性模式而且鏡像伺服器和見證必須存在。資料庫必須已同步處理,而見證也必須連接到鏡像伺服器。

    見證角色是用來驗證特定的夥伴伺服器是否已啟動而且可以正常運作。如果鏡像伺服器與主體伺服器的連接中斷,但見證仍與主體伺服器連接,鏡像伺服器就不會起始容錯移轉。如需詳細資訊,請參閱<資料庫鏡像見證>。

  • 手動容錯移轉

    這種形式需要使用高安全性模式。夥伴必須互相連接,而且資料庫也必須已完成同步處理。

  • 強制服務 (可能發生資料遺失)

    在高效能模式與不含自動容錯移轉的高安全性模式中,如果主體伺服器已經故障,但鏡像伺服器仍然可用,就可以使用強制服務。

    重要事項重要事項

    高效能模式是在沒有見證的情況下執行的模式。但是如果有見證存在,該見證就必須連接到鏡像伺服器,才能使用強制服務。

在任何角色切換案例中,一旦新主體資料庫變成線上狀態之後,用戶端應用程式就可以重新連接到該資料庫,以迅速復原作業。

與其他 Database Engine 功能的互通性和共存性

資料庫鏡像可與 SQL Server 的下列功能或元件搭配使用。

資料庫鏡像支援

自從 SQL Server 2005 Service Pack 1 (SP1) 以來,Standard 和 Enterprise Edition 就已經支援資料庫鏡像夥伴伺服器和見證。但是夥伴伺服器必須使用相同的版本,而且只有 Enterprise Edition 才支援非同步資料庫鏡像 (高效能模式)。而 Workgroup Edition 和 Express Edition 也支援見證。