備註
這項功能將在未來的 SQL Server Microsoft 版本中移除。 請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 請改用 Always On 可用性群組。
資料庫鏡像 是增加 SQL Server 資料庫可用性的解決方案。 鏡像是以每個資料庫為基準實作,只適用於使用完整復原模式的資料庫。
這很重要
如需支持資料庫鏡像、限制、必要條件、設定夥伴伺服器的建議,以及部署資料庫鏡像的建議的相關信息,請參閱 資料庫鏡像的必要條件、限制和建議。
資料庫鏡像的優點
資料庫鏡像是提供下列優點的簡單策略:
增加資料庫的可用性。
發生災害時,在具有自動故障轉移的高安全性模式中,故障轉移會快速讓資料庫的待命複本上線(不會遺失數據)。 在其他作業模式中,資料庫管理員可以替代強制服務(可能遺失數據)至資料庫的待命複本。 如需詳細資訊,請參閱本主題稍後的角色 切換。
增加數據保護。
資料庫鏡像會根據作業模式是高安全性還是高效能,提供數據的完整或幾乎完整備援。 如需詳細資訊,請參閱本主題稍後的 作業模式。
在 SQL Server 2008 Enterprise 或更新版本上執行的資料庫鏡像夥伴會自動嘗試解決某些類型錯誤,以防止讀取數據頁面。 無法讀取頁面的合作夥伴會向其他合作夥伴要求新的複本。 如果這個要求成功,無法讀取的頁面就會使用副本取代,這通常會解決錯誤。 如需詳細資訊,請參閱自動修復頁面(針對可用性群組和資料庫鏡像)。
改善升級期間生產資料庫的可用性。
若要將鏡像資料庫的停機時間降到最低,您可以循序升級裝載故障轉移夥伴的 SQL Server 實例。 這隻會造成單一故障轉移的停機時間。 這種升級形式稱為 滾動升級。 如需詳細資訊,請參閱在停機時間最短的系統上為鏡像資料庫安裝 Service Pack。
資料庫鏡像術語和定義
自動容錯移轉
當主體伺服器無法使用時的過程,鏡像伺服器會接管主體伺服器的角色,並將其資料庫複本上線為主體資料庫。
故障備援夥伴
作為鏡像資料庫角色切換夥伴的兩個伺服器實例(主體伺服器或鏡像伺服器)。
強制服務
資料庫擁有者在主體伺服器失敗時起始的故障轉移,該伺服器會在服務處於未知狀態時,將服務傳輸到鏡像資料庫。
高效能模式
資料庫鏡像工作階段會以非同步方式作業,而且僅使用主體伺服器和鏡像伺服器。 唯一的角色切換形式是強制的服務 (可能造成資料遺失)。
高安全性模式
資料庫鏡像工作階段會以同步方式作業,並選擇性地使用見證以及主體伺服器和鏡像伺服器。
手動容錯移轉
由資料庫擁有者發起的故障轉移,在主體伺服器仍在運行時,將服務從主體資料庫轉移到同步狀態的鏡像資料庫中。
鏡像資料庫
通常與主體資料庫完全同步的資料庫複本。
鏡像伺服器
在資料庫鏡像組態中,伺服器實例上存在鏡像資料庫。
鏡像伺服器
在資料庫鏡像組態中,鏡像資料庫所在的伺服器實例。
principal 資料庫
在資料庫鏡像中,讀寫資料庫的事務記錄會套用至資料庫的只讀複本(鏡像資料庫)。
主體伺服器
在資料庫鏡像中,目前資料庫是主要資料庫的夥伴。
重做佇列
已接收在鏡像伺服器磁碟上待處理的事務記錄。
角色
主體伺服器和鏡像伺服器會執行互補的主體和鏡像角色。 可選擇地,見證的角色是由第三個伺服器執行個體執行。
角色切換
鏡像接管主體角色。
傳送佇列
在主伺服器的記錄磁碟上累積的未傳送事務記錄。
會議
主伺服器、鏡像伺服器及見證伺服器(如果存在的話)在資料庫鏡像過程中發生的關係。
鏡像會話啟動或繼續之後,主體伺服器上累積之主體資料庫的記錄檔記錄會傳送至鏡像伺服器,以便儘快將這些記錄檔記錄寫入磁碟以趕上主體伺服器。
交易安全性
鏡像特有的資料庫屬性,用來決定資料庫鏡像工作階段是以同步或非同步方式作業。 有兩個安全性層級:FULL 和 OFF。
證人
僅適用於高安全模式,一個可選擇的 SQL Server 實例,能讓鏡像伺服器辨識何時應啟動自動故障轉移。 與兩個容錯移轉夥伴不同的是,見證並不是為資料庫服務。 支援自動容錯移轉是見證的唯一角色。
資料庫鏡像概觀
資料庫鏡像會維護單一資料庫的兩個複本,該複本必須位於 SQL Server Database Engine 的不同伺服器實例上。 這些伺服器實例通常位於不同位置的計算機上。 在資料庫上啟動資料庫鏡像,會在這些伺服器實例之間起始稱為 資料庫鏡像會話的關聯性。
一個伺服器實例會將資料庫服務給用戶端( 主體伺服器)。 另一個伺服器會根據鏡像會話的組態和狀態,作為熱待命或暖待命的伺服器(鏡像伺服器)。 當資料庫鏡像會話同步時,資料庫鏡像提供了一個熱待命伺服器,支援快速過渡而不會遺失已提交交易的資料。 當會話未同步時,鏡像伺服器通常可作為暖備伺服器(可能會遺失資料)。
主體和鏡像伺服器會在資料庫鏡像會話中以夥伴身分通訊並合作。 這兩個夥伴會在會話中執行互補角色: 主體角色 和 鏡像角色。 在任何指定時間,一個夥伴會執行主體角色,另一個夥伴執行鏡像角色。 每位合作夥伴被描述為擁有其當前的角色。 擁有主體角色的夥伴稱為 主體伺服器,而其資料庫複本是目前的主體資料庫。 擁有鏡像角色的夥伴稱為 鏡像伺服器,其資料庫複本是目前的鏡像資料庫。 在生產環境中部署資料庫鏡像時,作為主資料庫的是生產資料庫。
資料庫鏡像牽涉到儘快將主體資料庫上發生的每個插入、更新和刪除作業 重做 到鏡像資料庫。 重做是透過將活動交易記錄檔的記錄流傳送到鏡像伺服器來完成,該伺服器會以最快速度按順序將記錄檔套用到鏡像資料庫。 不同於在邏輯層級運作的復寫,資料庫鏡像在實體記錄的層級運作。 從 SQL Server 2008 開始,主體伺服器會先壓縮事務歷史記錄記錄的數據流,再傳送至鏡像伺服器。 此記錄壓縮會在所有鏡像會話中發生。
備註
給定的伺服器執行個體可參與具有相同或不同夥伴的多個同時進行的資料庫鏡像會話。 伺服器執行個體可以在某些會話中擔任夥伴,在其他會話中充當見證。 鏡像伺服器實例必須執行相同版本的 SQL Server。
作業模式
資料庫鏡像會話會使用同步或異步作執行。 在非同步操作下,交易會提交,而無需等待鏡像伺服器將日誌寫入磁碟,以將效能最大化。 在同步運作下,交易會在雙方同時認可,但這會增加交易延遲。
鏡像作業模式共有兩種。 其中一種模式是高安全性,並且支援同步作業。 在高安全性模式下,當會話啟動時,鏡像伺服器會儘快將鏡像資料庫與主體資料庫同步處理。 一旦資料庫同步處理完成之後,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性。
第二種作業模式 高效能模式會以異步方式執行。 鏡像伺服器會盡量跟上主體伺服器所傳送的記錄。 鏡像資料庫可能會稍微落後主體資料庫。 然而,在資料庫之間的間距通常很小。 不過,如果主體伺服器處於繁重的工作負載下,或鏡像伺服器的系統超載,則差距可能會變得顯著。
在高效能模式中,主體伺服器一旦將記錄檔記錄傳送至鏡像伺服器,主體伺服器就會將確認傳送給用戶端。 它不會等候鏡像伺服器的通知。 這表示交易認可,而不需要等待鏡像伺服器將記錄寫入磁碟。 這類異步操作可讓主伺服器在交易延遲最小化的情況下執行,但可能會承擔某些數據損失的風險。
所有資料庫鏡像會話只支援一部主體伺服器和一部鏡像伺服器。 下圖顯示此組態。
具有自動故障轉移的高安全性模式需要第三個伺服器實例,稱為 見證。 與兩位夥伴不同的是,見證並不是為資料庫服務。 見證可藉由驗證主體伺服器是否啟動並正常運作,以支援自動故障轉移。 只有當鏡像和見證與主體伺服器中斷連接後仍然保持相互連接時,鏡像伺服器才會開始進行自動容錯移轉。
下圖顯示包含見證的組態。
如需詳細資訊,請參閱本主題稍後的角色 切換。
備註
建立新的鏡像會話或將見證新增至現有的鏡像組態,需要所有相關的伺服器實例都執行相同版本的 SQL Server。 不過,當您升級至 SQL Server 2008 或更新版本時,相關實例的版本可能會有所不同。 如需詳細資訊,請參閱 在升級伺服器實例時將鏡像資料庫的停機時間降到最低。
交易安全性和作業模式
作業模式為異步或同步,取決於交易安全性設定。 如果您獨佔使用 SQL Server Management Studio 來設定資料庫鏡像,當您選取作業模式時,系統會自動設定交易安全性設定。
如果您使用 Transact-SQL 來設定資料庫鏡像,您必須瞭解如何設定交易安全性。 交易安全性是由 ALTER DATABASE 語句的 SAFETY 屬性所控制。 在進行鏡像的資料庫中,SAFETY 設定為 FULL 或 OFF。
如果 SAFETY 選項設定為 FULL,在初始同步處理階段之後,資料庫鏡像作業是同步的。 如果見證被設定在高安全性模式,會話可以支援自動故障轉移。
如果 SAFETY 選項設定為 OFF,則資料庫鏡像作業是異步的。 會話會以高效能模式執行,而且 WITNESS 選項也應該是 OFF。
如需詳細資訊,請參閱 Database Mirroring Operating Modes。
角色切換
在資料庫鏡像會話中,主體與鏡像角色通常可以在稱為角色切換的過程中互換。 角色切換牽涉到將主體角色傳輸到鏡像伺服器。 在角色切換中,鏡像伺服器會作為主體伺服器的 故障轉移夥伴 。 當角色切換發生時,鏡像伺服器會接管主體角色,並將其資料庫複本聯機為新的主體資料庫。 如果可用,先前的主體伺服器會擔任鏡像角色,其資料庫則轉變為新的鏡像資料庫。 角色可能會重複切換。
下列三種形式的角色切換存在。
自動容錯移轉
這需要高安全性模式,以及鏡像伺服器和見證的存在。 資料庫必須已經同步,而且見證者必須連接至鏡像伺服器。
見證的角色是確認指定的夥伴伺服器是否已啟動並正常運作。 如果鏡像伺服器失去與主體伺服器的連線,但見證仍連線到主體伺服器,鏡像伺服器就不會起始故障轉移。 如需詳細資訊,請參閱 資料庫鏡像見證。
手動故障轉移
這需要高安全性模式。 合作夥伴必須彼此連線,而且資料庫必須已經同步。
強制服務 (可能遺失資料)
在高效能模式和沒有自動故障轉移的高安全性模式下,如果主體伺服器失敗且鏡像伺服器可用,就可能強制服務。
這很重要
高效能模式的目的是在沒有見證的情況下執行。 但是,如果見證存在,強制服務會要求見證已連線到鏡像伺服器。
在任何角色切換案例中,只要新的主體資料庫上線,用戶端應用程式就可以透過重新連線至資料庫來快速復原。
並行會議
指定的伺服器實例可以參與多個並行資料庫鏡像會話(每個鏡像資料庫一次),以及相同或不同的伺服器實例。 伺服器實例通常專門作為所有資料庫鏡像會話中的夥伴或見證。 不過,由於每個會話與其他會話無關,伺服器實例可以在某些會話中當做夥伴,在其他會話中做為見證。 例如,在三個伺服器實例中,請考慮下列四個會話(SSInstance_1、 SSInstance_2和 SSInstance_3)。 每個伺服器實例在某些會話中擔任夥伴角色,並在其他會話中擔任見證角色。
| 伺服器實例 | 資料庫 A 的會話 | 資料庫 B 的會話 | 資料庫 C 的會話 | 資料庫 D 的工作階段 |
|---|---|---|---|---|
SSInstance_1 |
證人 | 合作夥伴 | 合作夥伴 | 合作夥伴 |
SSInstance_2 |
合作夥伴 | 證人 | 合作夥伴 | 合作夥伴 |
SSInstance_3 |
合作夥伴 | 合作夥伴 | 證人 | 證人 |
下圖說明在兩個鏡像會話中以夥伴身分參與的兩個伺服器實例。 一個會話適用於名為 Db_1的資料庫,另一個會話則適用於名為 Db_2 的資料庫。
每個資料庫都與其他資料庫無關。 例如,伺服器實例一開始可能是兩個資料庫的鏡像伺服器。 如果其中一個資料庫發生故障轉移,伺服器執行個體將成為故障轉移資料庫的主伺服器,同時繼續作為另一個資料庫的鏡像服務器。
另一個例子是作為多個資料庫主要伺服器的伺服器實例,這些資料庫以高安全性模式運行並具有自動故障轉移功能。如果伺服器實例故障,所有資料庫會自動轉移至其各自的鏡像資料庫。
設定伺服器實例以同時作為夥伴和見證運作時,請確定資料庫鏡像端點支援這兩個角色(如需詳細資訊,請參閱 資料庫鏡像端點 (SQL Server) 。 此外,請確定系統有足夠的資源來減少資源爭用。
備註
因為鏡像資料庫彼此獨立,所以資料庫無法以群組的形式故障轉移。
用戶端連線
資料庫鏡像會話的用戶端連線支援是由 Microsoft .NET Data Provider for SQL Server 提供。 如需詳細資訊,請參閱將用戶端連線到資料庫鏡像會話(SQL Server)。
暫停會話對主體事務歷史記錄的影響
資料庫擁有者可以隨時暫停會話。 暫停會在移除鏡像時保留會話狀態。 當會話暫停時,主體伺服器不會將任何新的記錄檔記錄傳送至鏡像伺服器。 所有這些記錄都會保持作用中,並累積在主體資料庫的事務歷史記錄中。 如果資料庫鏡像會話保持暫停,則交易記錄檔無法截斷。 因此,如果資料庫鏡像會話暫停太久,記錄檔就會填滿。
如需詳細資訊,請參閱 暫停與繼續資料庫鏡像 (SQL Server)。
設定資料庫鏡像會話
在鏡像會話開始之前,資料庫擁有者或系統管理員必須先建立鏡像資料庫、設定端點和登入,而且在某些情況下,請建立和設定憑證。 如需詳細資訊,請參閱設定資料庫鏡像(SQL Server)。
與其他資料庫引擎功能的互作性和共存性
資料庫鏡像可以搭配 SQL Server 的下列功能或元件使用。
本節中
資料庫鏡像的必要條件、限制和建議
描述設定資料庫鏡像的必要條件和建議。
資料庫鏡像運作模式
包含資料庫鏡像會話之同步和異步作模式的相關信息,以及有關在資料庫鏡像會話期間切換夥伴角色的相關信息。
資料庫鏡像見證
描述見證在資料庫鏡像中的角色、如何在多個鏡像會話中使用單一見證、見證的軟體和硬體建議,以及見證在自動故障轉移中的角色。 它也包含新增或移除見證的相關信息。
資料庫鏡像會話期間的角色切換 (SQL Server)
包含資料庫鏡像會話期間切換夥伴角色的相關信息,包括自動故障轉移、手動故障轉移和強制服務(可能遺失數據)。 此外,也包含估計角色切換期間服務中斷的相關信息。
資料庫鏡像期間可能發生的失敗
討論可能會導致資料庫鏡像會話中斷的物理、作業系統和 SQL Server 問題,包括硬體錯誤和軟體錯誤。 討論鏡像逾時機制如何回應軟錯誤。
資料庫鏡像端點 (SQL Server)
討論資料庫鏡像端點的運作方式。
建立資料庫鏡像 (SQL Server)
包含設定資料庫鏡像的必要條件、建議和步驟的相關主題。
將用戶端連線到資料庫鏡像工作階段 (SQL Server)
包含涵蓋客戶端連接字串屬性的主題,以及用戶端連線和重新連線到鏡像資料庫的演算法。
暫停與繼續資料庫鏡像 (SQL Server)
討論暫停資料庫鏡像時會發生什麼情況,包括對事務歷史記錄截斷的影響,並包含如何暫停和繼續資料庫鏡像的描述。
移除資料庫鏡像 (SQL Server)
討論移除鏡像的影響,並包含如何結束會話的描述
監控資料庫鏡像 (SQL Server)
包含使用資料庫鏡像監視器或 dbmmonitor 預 存程式監視資料庫鏡像或會話的相關信息。
相關工作
設定工作
使用 SQL Server Management Studio
使用 Transact-SQL
使用 Transact-SQL 或 SQL Server Management Studio
行政工作
Transact-SQL
SQL Server Management Studio
另請參閱
資料庫鏡像端點 (SQL Server)
自動修復頁面 (適用於可用性群組和資料庫鏡像)
排除資料庫鏡像配置的問題 (SQL Server)
資料庫鏡像:互作性與共存性 (SQL Server)
資料庫鏡像的必要條件、限制和建議
AlwaysOn 可用性群組概觀 (SQL Server)
關於記錄傳送 (SQL Server)