002.SQLServer資料庫映象高可用簡介
阿新 • • 發佈:2019-05-15
一 資料庫映象簡介
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 的下列功能或元件一起使用。- 日誌傳送
- 全文目錄
- 資料庫快照
- 複製