一 資料庫鏡像簡介 1.1 資料庫鏡像概述 資料庫鏡像維護一個資料庫的兩個副本,這兩個副本必須駐留在不同的 SQL Server 資料庫引擎伺服器實例上。 通常,這些伺服器實例駐留在不同位置的電腦上。 啟動資料庫上的資料庫鏡像操作時,在這些伺服器實例之間形成一種關係,稱為“資料庫鏡像會話”。 其中 ...
一 資料庫鏡像簡介
1.1 資料庫鏡像概述
資料庫鏡像維護一個資料庫的兩個副本,這兩個副本必須駐留在不同的 SQL Server 資料庫引擎伺服器實例上。 通常,這些伺服器實例駐留在不同位置的電腦上。 啟動資料庫上的資料庫鏡像操作時,在這些伺服器實例之間形成一種關係,稱為“資料庫鏡像會話”。 其中一個伺服器實例使資料庫服務於客戶端(“主體伺服器”), 另一個伺服器實例則根據鏡像會話的配置和狀態,充當熱備用或溫備用伺服器(“鏡像伺服器”)。 同步資料庫鏡像會話時,資料庫鏡像提供熱備用伺服器,可支持在已提交事務不丟失數據的情況下進行快速故障轉移。 未同步會話時,鏡像伺服器通常用作熱備用伺服器(可能造成數據丟失)。 在“資料庫鏡像會話”中,主體伺服器和鏡像伺服器作為“伙伴”進行通信和協作。 兩個伙伴在會話中扮演互補的角色:“主體角色”和“鏡像角色”。 在任何給定的時間,都是一個伙伴扮演主體角色,另一個伙伴扮演鏡像角色。 每個伙伴擁有其當前角色。 擁有主體角色的伙伴稱為“主體伺服器”,其資料庫副本為當前的主體資料庫。 擁有鏡像角色的伙伴稱為“鏡像伺服器”,其資料庫副本為當前的鏡像資料庫。 如果資料庫鏡像部署在生產環境中,則主體資料庫即為“生產資料庫”。 資料庫鏡像涉及儘快將對主體資料庫執行的每項插入、更新和刪除操作“重做”到鏡像資料庫中。 重做通過將活動事務日誌記錄的流發送到鏡像伺服器來完成,這會儘快將日誌記錄按順序應用到鏡像資料庫中。 與邏輯級別執行的複製不同,資料庫鏡像在物理日誌記錄級別執行。 從 SQL Server 2008 開始,在事務日誌記錄的流發送到鏡像伺服器之前,主體伺服器會先將其壓縮。 在所有鏡像會話中都會進行這種日誌壓縮。 提示:給定的伺服器實例可以參與到多個具有相同或不同伙伴的併發資料庫鏡像會話中。 某個伺服器實例可能在某些會話中是伙伴,而在其他會話中則是見證伺服器。 鏡像伺服器實例必須正在運行 SQL Server 的相同版本。1.2 資料庫鏡像的優點
資料庫鏡像是一種簡單的策略,具有下列優點:- 提高資料庫的可用性
- 增強數據保護功能
- 提高生產資料庫在升級期間的可用性
1.3 資料庫鏡像術語和定義
- 自動故障轉移 (automatic failover)
- 故障轉移伙伴 (failover partners)
- 高性能模式 (High-performance mode)
- 高安全性模式 (High-safety mode)
- 手動故障轉移 (manual failover)
- 鏡像資料庫 (mirror database)
- 鏡像伺服器 (mirror server)
- 鏡像伺服器 (mirror server)
- 主體資料庫 (principal database)
- 主體伺服器 (principal server)
- 重做隊列 (redo queue)
- 角色 (role)
- 角色切換 (role switching)
- 發送隊列 (send queue)
- 會話 (session)
- 事務安全 (Transaction safety)
- 見證伺服器 (Witness)
1.4 運行模式
資料庫鏡像會話以同步操作或非同步操作運行。 在非同步操作下,事務不需要等待鏡像伺服器將日誌寫入磁碟便可提交,這樣可最大程度地提高性能。 在同步操作下,事務將在伙伴雙方處提交,但會延長事務滯後時間。 有兩種鏡像運行模式。 一種是“高安全性模式”,它支持同步操作。 在高安全性模式下,當會話開始時,鏡像伺服器將使鏡像資料庫儘快與主體資料庫同步。 一旦同步了資料庫,事務將在伙伴雙方處提交,這會延長事務滯後時間。 第二種運行模式,即“高性能模式”,非同步運行。 鏡像伺服器嘗試與主體伺服器發送的日誌記錄保持同步。 鏡像資料庫可能稍微滯後於主體資料庫。 但是,資料庫之間的時間間隔通常很小。 但是,如果主體伺服器的工作負荷過高或鏡像伺服器系統的負荷過高,則時間間隔會增大。 所有資料庫鏡像會話都只支持一臺主體伺服器和一臺鏡像伺服器。 具有自動故障轉移功能的高安全性模式要求使用第三個伺服器實例,稱為“見證伺服器”。 與這兩個伙伴不同的是,見證伺服器並不能用於資料庫。 見證伺服器通過驗證主體伺服器是否已啟用並運行來支持自動故障轉移。 只有在鏡像伺服器和見證伺服器與主體伺服器斷開連接之後而保持相互連接時,鏡像伺服器才啟動自動故障轉移。 註意:建立新的鏡像會話或將見證伺服器添加到現有鏡像配置要求涉及的所有伺服器實例運行相同版本的 SQL Server。 但是,當升級到 SQL Server 2008 或更高版本時,所涉及的實例的版本可以不同。 1.5 事務安全與運行模式 運行模式是非同步還是同步取決於事務安全設置。 如果專門使用 SQL Server Management Studio 來配置資料庫鏡像,則在您選擇運行模式時,將自動配置事務安全設置。 如果使用 Transact-SQL 配置資料庫鏡像,則必須瞭解如何設置事務安全。 事務安全由 ALTER DATABASE 語句的 SAFETY 屬性控制。 在正在鏡像的資料庫中,SAFETY 為 FULL 或 OFF。 如果將 SAFETY 選項設置為 FULL,則在初始同步階段後,資料庫鏡像操作將同步執行。 如果在高安全性模式下設置見證伺服器,則會話支持自動故障轉移。 如果將 SAFETY 選項設置為 OFF,則資料庫鏡像操作將非同步執行。 會話在高性能模式下運行,並且 WITNESS 選項也應設置為 OFF。二 角色切換
2.1 切換概述
在資料庫鏡像會話上下文中,通常可以使用一個稱為“角色切換”的過程來互換主體角色和鏡像角色。 角色切換涉及將主體角色轉換給鏡像伺服器的操作。 在角色切換中,鏡像伺服器充當主體伺服器的“故障轉移伙伴”。 進行角色切換時,鏡像伺服器將接管主體角色,並使其資料庫的副本聯機以作為新的主體資料庫。 以前的主體伺服器(如果有)將充當鏡像角色,並且其資料庫將變為新的鏡像資料庫。 這些角色可以反覆地來回切換。2.2 角色切換形式
- 自動故障轉移
- 手動故障轉移
- 強制服務(可能造成數據丟失)
三 其他
3.1 暫停會話對主體事務日誌的影響
資料庫所有者可以隨時暫停會話。 執行暫停操作將保留在刪除鏡像時的會話狀態。 暫停會話時,主體伺服器不會向鏡像伺服器發送任何新的日誌記錄。 所有這些記錄將保持活動狀態,並堆積在主體資料庫的事務日誌中。 只要資料庫鏡像會話保持暫停狀態,事務日誌就不會被截斷。 因此,如果資料庫鏡像會話暫停時間過長,則可能會使該日誌填滿。3.2 設置資料庫鏡像會話
開始鏡像會話之前,資料庫所有者或系統管理員必須創建鏡像資料庫,設置端點和登錄名。在某些情況下,還要創建並設置證書。3.3 與其他資料庫引擎功能的互操作性和共存
資料庫鏡像可以與 SQL Server 的下列功能或組件一起使用。- 日誌傳送
- 全文目錄
- 資料庫快照
- 複製