簡(jiǎn)述SQL Server 2005數(shù)據(jù)庫(kù)鏡像相關(guān)知識(shí)
SQL Server 數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)鏡像是用于提高數(shù)據(jù)庫(kù)可用性的主要軟件解決方案。數(shù)據(jù)庫(kù)鏡像基于每個(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn),并且只適用于使用完整恢復(fù)模式的數(shù)據(jù)庫(kù)。簡(jiǎn)單恢復(fù)模式和大容量日志恢復(fù)模式不支持?jǐn)?shù)據(jù)庫(kù)鏡像,數(shù)據(jù)庫(kù)鏡像不能鏡像master、msdb、tempdb 或 model 數(shù)據(jù)庫(kù)。本文我們主要就介紹一下數(shù)據(jù)庫(kù)鏡像的相關(guān)知識(shí),接在來(lái)就讓我們來(lái)一起了解一下吧!
數(shù)據(jù)庫(kù)鏡像維護(hù)一個(gè)數(shù)據(jù)庫(kù)的兩個(gè)副本,這兩個(gè)副本必須駐留在不同的SQL Server 數(shù)據(jù)庫(kù)引擎實(shí)例(服務(wù)器實(shí)例)上。通常,這些服務(wù)器實(shí)例駐留在不同位置的計(jì)算機(jī)上。其中一個(gè)服務(wù)器實(shí)例使數(shù)據(jù)庫(kù)服務(wù)于客戶端(“主體服務(wù)器”),而另一個(gè)服務(wù)器實(shí)例則充當(dāng)熱備用或備用服務(wù)器(“鏡像服務(wù)器”),具體取決于鏡像會(huì)話的配置和狀態(tài)。同步數(shù)據(jù)庫(kù)鏡像會(huì)話時(shí),數(shù)據(jù)庫(kù)鏡像提供了熱備用服務(wù)器,可支持在已提交事務(wù)不丟失數(shù)據(jù)的情況下進(jìn)行快速故障轉(zhuǎn)移。未同步會(huì)話時(shí),鏡像服務(wù)器通常用作備用服務(wù)器(可能造成數(shù)據(jù)丟失)。
數(shù)據(jù)庫(kù)鏡像的優(yōu)點(diǎn)
數(shù)據(jù)庫(kù)鏡像是一種簡(jiǎn)單的策略,具有下列優(yōu)點(diǎn):
增強(qiáng)數(shù)據(jù)保護(hù)功能。
數(shù)據(jù)庫(kù)鏡像提供完整或接近完整的數(shù)據(jù)冗余,具體取決于運(yùn)行模式是高安全性模式還是高性能模式。有關(guān)詳細(xì)信息,請(qǐng)參閱本主題后面的“運(yùn)行模式”。
提高數(shù)據(jù)庫(kù)的可用性。
發(fā)生災(zāi)難時(shí),在具有自動(dòng)故障轉(zhuǎn)移功能的高安全性模式下,自動(dòng)故障轉(zhuǎn)移可快速使數(shù)據(jù)庫(kù)的備用副本在線(而不會(huì)丟失數(shù)據(jù))。在其他運(yùn)行模式下,數(shù)據(jù)庫(kù)管理員可以選擇強(qiáng)制服務(wù)(可能丟失數(shù)據(jù)),以替代數(shù)據(jù)庫(kù)的備用副本。有關(guān)詳細(xì)信息,請(qǐng)參閱本主題后面的“角色切換”。
提高生產(chǎn)數(shù)據(jù)庫(kù)在升級(jí)期間的可用性。
若要使鏡像數(shù)據(jù)庫(kù)的停機(jī)時(shí)間減至最小,可以按順序升級(jí)要參加數(shù)據(jù)庫(kù)鏡像會(huì)話的 SQL Server 實(shí)例,從而使停機(jī)時(shí)間僅為一次故障轉(zhuǎn)移的時(shí)間。這種形式的升級(jí)稱為“滾動(dòng)升級(jí)”。
數(shù)據(jù)庫(kù)鏡像工作方式
在“數(shù)據(jù)庫(kù)鏡像會(huì)話”中,主體服務(wù)器和鏡像服務(wù)器作為“伙伴”進(jìn)行通信和協(xié)作。兩個(gè)伙伴在會(huì)話中扮演互補(bǔ)的角色:“主體角色”和“鏡像角色”。在任何給定的時(shí)間,都是一個(gè)伙伴扮演主體角色,另一個(gè)伙伴扮演鏡像角色。每個(gè)伙伴擁有其當(dāng)前角色。擁有主體角色的伙伴稱為“主體服務(wù)器”,其數(shù)據(jù)庫(kù)副本為當(dāng)前的主體數(shù)據(jù)庫(kù)。擁有鏡像角色的伙伴稱為“鏡像服務(wù)器”,其數(shù)據(jù)庫(kù)副本為當(dāng)前的鏡像數(shù)據(jù)庫(kù)。如果數(shù)據(jù)庫(kù)鏡像部署在生產(chǎn)環(huán)境中,則主體數(shù)據(jù)庫(kù)即為生產(chǎn)數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)鏡像涉及盡快將對(duì)主體數(shù)據(jù)庫(kù)執(zhí)行的每項(xiàng)插入、更新和刪除操作重做到鏡像數(shù)據(jù)庫(kù)中。重做通過(guò)將每個(gè)活動(dòng)事務(wù)日志記錄發(fā)送到鏡像服務(wù)器來(lái)完成,這會(huì)盡快將日志記錄按順序應(yīng)用到鏡像數(shù)據(jù)庫(kù)中。與邏輯級(jí)別執(zhí)行的復(fù)制不同,數(shù)據(jù)庫(kù)鏡像在物理日志記錄級(jí)別執(zhí)行。
運(yùn)行模式
數(shù)據(jù)庫(kù)鏡像會(huì)話以同步操作或異步操作運(yùn)行。在異步操作下,事務(wù)不需要等待鏡像服務(wù)器將日志寫(xiě)入磁盤(pán)便可提交,這樣可最大程度地提高性能。在同步操作下,已提交的事務(wù)將在伙伴雙方上提交,但會(huì)延長(zhǎng)事務(wù)滯后時(shí)間。
有兩種鏡像運(yùn)行模式。一種是“高安全性模式”,它支持同步操作。在高安全性模式下,當(dāng)會(huì)話開(kāi)始時(shí),鏡像服務(wù)器將使鏡像數(shù)據(jù)庫(kù)盡快與主體數(shù)據(jù)庫(kù)同步。在同步數(shù)據(jù)庫(kù)之后,已提交的事務(wù)將在伙伴雙方上提交,但會(huì)延長(zhǎng)事務(wù)滯后時(shí)間。
第二種運(yùn)行模式,即“高性能模式”,異步運(yùn)行。鏡像服務(wù)器嘗試與主體服務(wù)器發(fā)送的日志記錄保持同步。雖然鏡像數(shù)據(jù)庫(kù)可能稍微滯后于主體數(shù)據(jù)庫(kù),但這兩個(gè)數(shù)據(jù)庫(kù)之間的時(shí)間間隔通常很小。但是,如果主體服務(wù)器的工作負(fù)荷過(guò)高或鏡像服務(wù)器系統(tǒng)的負(fù)荷過(guò)高,則時(shí)間間隔會(huì)增大。
在高性能模式中,主體服務(wù)器向鏡像服務(wù)器發(fā)送日志記錄之后會(huì)立即再向客戶端發(fā)送確認(rèn)一條消息,而不需要等待鏡像服務(wù)器的確認(rèn)。這意味著事務(wù)不需要等待鏡像服務(wù)器將日志寫(xiě)入磁盤(pán)便可提交。此異步操作允許主體服務(wù)器在事務(wù)滯后時(shí)間最小的條件下運(yùn)行,但可能會(huì)丟失某些數(shù)據(jù)。
所有數(shù)據(jù)庫(kù)鏡像會(huì)話都只支持一臺(tái)主體服務(wù)器和一臺(tái)鏡像服務(wù)器。下圖闡釋了這種配置。
具有自動(dòng)故障轉(zhuǎn)移功能的高安全性模式要求使用第三個(gè)服務(wù)器實(shí)例,稱為“見(jiàn)證服務(wù)器”。與這兩個(gè)伙伴不同的是,見(jiàn)證服務(wù)器并不能用于數(shù)據(jù)庫(kù)。見(jiàn)證服務(wù)器通過(guò)驗(yàn)證主體服務(wù)器是否已啟用并運(yùn)行來(lái)僅支持自動(dòng)故障轉(zhuǎn)移。只有在鏡像服務(wù)器和見(jiàn)證服務(wù)器與主體服務(wù)器斷開(kāi)連接之后而保持相互連接時(shí),鏡像服務(wù)器才啟動(dòng)自動(dòng)故障轉(zhuǎn)移。
下圖顯示了包含見(jiàn)證服務(wù)器的配置。
事務(wù)安全與運(yùn)行模式
運(yùn)行模式是異步還是同步取決于事務(wù)安全設(shè)置。如果專門(mén)使用 SQL Server Management Studio 來(lái)配置數(shù)據(jù)庫(kù)鏡像,則在您選擇運(yùn)行模式時(shí),將自動(dòng)配置事務(wù)安全設(shè)置。
如果使用 Transact-SQL 配置數(shù)據(jù)庫(kù)鏡像,則需要了解如何設(shè)置事務(wù)安全。事務(wù)安全由 ALTER DATABASE 語(yǔ)句的 SAFETY 屬性控制。在正在鏡像的數(shù)據(jù)庫(kù)中,SAFETY 為 FULL 或 OFF。
如果將 SAFETY 選項(xiàng)設(shè)置為 FULL,則在初始同步階段后,數(shù)據(jù)庫(kù)鏡像操作將同步執(zhí)行。如果在高安全性模式下設(shè)置見(jiàn)證服務(wù)器,則會(huì)話支持自動(dòng)故障轉(zhuǎn)移。
如果將 SAFETY 選項(xiàng)設(shè)置為 OFF,則數(shù)據(jù)庫(kù)鏡像操作將異步執(zhí)行。會(huì)話在高性能模式下運(yùn)行,并且 WITNESS 選項(xiàng)也應(yīng)設(shè)置為 OFF。
角色切換
在數(shù)據(jù)庫(kù)鏡像會(huì)話上下文中,通??梢允褂靡粋€(gè)稱為“角色切換”的過(guò)程來(lái)互換主體角色和鏡像角色。角色切換涉及將主體角色轉(zhuǎn)換給鏡像服務(wù)器的操作。在角色切換中,鏡像服務(wù)器充當(dāng)主體服務(wù)器的“故障轉(zhuǎn)移伙伴”。進(jìn)行角色切換時(shí),鏡像服務(wù)器將接管主體角色,并使其數(shù)據(jù)庫(kù)的副本在線以作為新的主體數(shù)據(jù)庫(kù)。以前的主體服務(wù)器(如果有)將充當(dāng)鏡像角色,并且其數(shù)據(jù)庫(kù)將變?yōu)樾碌溺R像數(shù)據(jù)庫(kù)。這些角色可以反復(fù)地來(lái)回切換。
存在以下三種角色切換形式:
自動(dòng)故障轉(zhuǎn)移
這要求使用高安全性模式并具有鏡像服務(wù)器和見(jiàn)證服務(wù)器。數(shù)據(jù)庫(kù)必須已同步,并且見(jiàn)證服務(wù)器必須連接到鏡像服務(wù)器。
見(jiàn)證服務(wù)器的作用是驗(yàn)證給定的伙伴服務(wù)器是否已啟動(dòng)并運(yùn)行。如果鏡像服務(wù)器與主體服務(wù)器斷開(kāi)連接,但見(jiàn)證服務(wù)器仍與主體服務(wù)器保持連接,則鏡像服務(wù)器無(wú)法啟動(dòng)故障轉(zhuǎn)移。
手動(dòng)故障轉(zhuǎn)移
這要求使用高安全性模式?;锇殡p方必須互相連接,并且數(shù)據(jù)庫(kù)必須已同步。
強(qiáng)制服務(wù)(可能造成數(shù)據(jù)丟失)
在高性能模式和不帶自動(dòng)故障轉(zhuǎn)移功能的高安全性模式下,如果主體服務(wù)器出現(xiàn)故障而鏡像服務(wù)器可用,則可以強(qiáng)制服務(wù)運(yùn)行。
重要提示:
高性能模式用于在沒(méi)有見(jiàn)證服務(wù)器的情況下運(yùn)行。但如果存在見(jiàn)證服務(wù)器,則強(qiáng)制服務(wù)將要求見(jiàn)證服務(wù)器連接到鏡像服務(wù)器。
在任一種角色切換情況下,一旦新的主體數(shù)據(jù)庫(kù)在線,客戶端應(yīng)用程序便會(huì)通過(guò)重新連接到數(shù)據(jù)庫(kù)來(lái)快速恢復(fù)。
數(shù)據(jù)庫(kù)鏡像支持
數(shù)據(jù)庫(kù)鏡像伙伴和見(jiàn)證服務(wù)器受到 SQL Server 2005 Standard Edition SP1 和更高版本支持,還受到 SQL Server 2005 Enterprise Edition SP1 和更高版本支持。前提是各伙伴都必須使用相同的版本,只有 SQL Server 2005 Enterprise Edition SP1 及更高版本支持異步數(shù)據(jù)庫(kù)鏡像(高性能模式)。見(jiàn)證服務(wù)器還受到 SQL Server 2005 Workgroup Edition SP1 和更高版本以及 SQL Server 2005 Express Edition SP1 和更高版本支持。
關(guān)于SQL Server 2005數(shù)據(jù)庫(kù)鏡像的知識(shí)就介紹到這里了,希望能夠給您帶來(lái)收獲的!
- 監(jiān)視SQLServer數(shù)據(jù)庫(kù)鏡像[圖文]
- SQL數(shù)據(jù)庫(kù)與oracle數(shù)據(jù)庫(kù)鏡像有什么不同對(duì)比
- MySQL 數(shù)據(jù)庫(kù)雙向鏡像、循環(huán)鏡像(復(fù)制)
- mssql2005數(shù)據(jù)庫(kù)鏡像搭建教程
- SQL Server誤區(qū)30日談 第10天 數(shù)據(jù)庫(kù)鏡像在故障發(fā)生后 馬上就能發(fā)現(xiàn)
- SQL Server 2008 R2數(shù)據(jù)庫(kù)鏡像部署圖文教程
- SQL Server 2008 數(shù)據(jù)庫(kù)鏡像部署實(shí)例之一 數(shù)據(jù)庫(kù)準(zhǔn)備
- SQL Server 2008 數(shù)據(jù)庫(kù)鏡像部署實(shí)例之二 配置鏡像,實(shí)施手動(dòng)故障轉(zhuǎn)移
- SQL Server 2008 數(shù)據(jù)庫(kù)鏡像部署實(shí)例之三 配置見(jiàn)證服務(wù)器
- SQL Server 2005 鏡像構(gòu)建手冊(cè)(sql2005數(shù)據(jù)庫(kù)同步鏡像方案)
- 利用SQL SERVER 2005數(shù)據(jù)庫(kù)鏡像實(shí)現(xiàn)可用性分析
相關(guān)文章
sqlserver中獲取當(dāng)前日期的午夜的時(shí)間值的實(shí)現(xiàn)方法
MS SQLServer,如何獲取當(dāng)前系統(tǒng)日期的午夜的時(shí)間值的方法,需要的朋友可以參考下。2011-09-09sql server 2005中使用with實(shí)現(xiàn)遞歸的方法
這篇文章介紹了sql server 2005中使用with實(shí)現(xiàn)遞歸的方法,有需要的朋友可以參考一下2013-09-09SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(2)
SqlServer 2005 T-SQL Query 學(xué)習(xí)筆記(2)2010-02-02SqlServer 2005/2008數(shù)據(jù)庫(kù)被標(biāo)記為“可疑”的解決辦法
當(dāng)數(shù)據(jù)庫(kù)發(fā)生這種操作故障時(shí),可以按如下操作步驟可解決此方法,打開(kāi)數(shù)據(jù)庫(kù)里的Sql 查詢編輯器窗口,運(yùn)行以下的命令。2010-05-05SQL2005 provider: 命名管道提供程序 error: 40 無(wú)法打開(kāi)到 SQL Server 的連接
這篇文章主要介紹了SQL2005 provider: 命名管道提供程序 error: 40 無(wú)法打開(kāi)到 SQL Server 的連接,需要的朋友可以參考下2015-01-01sqlserver 2008手工修改表結(jié)構(gòu),表不能保存的問(wèn)題與解決方法
今天晚上休息,寫(xiě)一個(gè)小程序,用的是sql server 2008,手工建立了一些表,然后我回頭想到了表字段中有一些需要增加一列,回頭我就插入一列,結(jié)果我保存的時(shí)候卻彈出如下窗口2010-04-04SQLServer2005 批量查詢自定義對(duì)象腳本
使用系統(tǒng)函數(shù)object_definition和系統(tǒng)表 sysobjects 就可以了2009-08-08SQL Server 2005的cmd_shell組件的開(kāi)啟方法
這篇文章介紹了SQL Server 2005的cmd_shell組件的開(kāi)啟方法,有需要的朋友可以參考一下2013-09-09Microsoft Sql server2005的安裝步驟圖文詳解及常見(jiàn)問(wèn)題解決方案
這篇文章主要介紹了Microsoft Sql server2005的安裝步驟圖文詳解及常見(jiàn)問(wèn)題解決方案的相關(guān)資料,需要的朋友可以參考下2016-05-05SQLServer 數(shù)據(jù)集合的交、并、差集運(yùn)算
SQLServer2005通過(guò)intersect,union,except和三個(gè)關(guān)鍵字對(duì)應(yīng)交、并、差三種集合運(yùn)算。2009-09-09