本文接着前面的章節:SQL Server鏡像簡單介紹 sql
本文出處:http://blog.csdn.net/dba_huangzj/article/details/27203053俗話說:工欲善其事必先利其器。計劃好怎樣部署和使用鏡像,可以下降很是多沒必要要的風險。數據庫
本文將依照三步驟的形式展現。但是要注意這不是惟一的標準,詳細狀況詳細分析。express
在搭建SQL Server鏡像時,必須先了解你所要部署的環境。才幹決定鏡像的配置項。編程
這不只是鏡像配置的前提,也是部署SQL Server甚至搭建數據平臺和其它高可用都應該作的事情。如下是一些常見的需要了解的問題:網絡
如下詳細介紹一下這6點:異步
依據鏡像的要求,必須使用SQL Server 2005 SP1以上的版本號,SP1是第一個全然支持鏡像功能的版本號。理想狀況下。主體server和鏡像server所使用的操做系統和sqlserver的版本號儘可能全然一致。對於SQL Server版本號,必須是企業版或者標準版。除此以外,數據庫的數據文件和日誌文件所在的盤符和文件夾名必須一致,假設不一致,當主體庫把事務發送到鏡像庫時會因爲沒法識別從而引發報錯。ide
假設引入了見證server,可以執行在工做組或者express版本號上。sqlserver
首先需要確保沒有文件組使用filestream選項。因爲filestream是經過T-SQL操做本地文件,鏡像沒法在鏡像server中讀取主體server上的文件。性能
其次,鏡像環境要求完整恢復模式。spa
在部署過程當中,最簡單的就是使用域帳號。
假設使用一樣的服務賬號。就不需要在端點中受權。
假設使用本地系統賬號執行鏡像,必須使用證書受權來替代Windows受權。當使用證書時。需要注意證書的過時時間。和其它最佳實踐同樣,假設不能使用域帳號,建議使用專用的帳號操做
假設需要作鏡像的庫很是大,在初始化的過程當中就要考慮到可能的風險。因爲通常步驟是先作完整備份,而後傳輸備份到鏡像server而後再還原。而後再在主體數據庫上作日誌備份再還原到鏡像中,這個步驟可能需要好幾個小時。
假設此時業務自己就比較繁忙。加上鏡像庫需要追上主體庫的進度,會致使嚴重的性能問題,最起碼網絡傳輸壓力會很是大。
針對這樣的狀況,可以使用log shipping功能進行傳輸。注意使用NORECOVERY選項而不要用STANDBY選項。在搭建鏡像一文中會提到,鏡像庫需要使用NORECOVERY狀態。
理想狀況下。鏡像server的性能應該接近主體server。因爲在Failover的時候可能會短時間接管主體server的所有請求,假設鏡像server性能過低,會致使用戶響應速度變慢。極端狀況下,鏡像server可能會在短時間內承受不了原主體server帶來的壓力直接崩潰。也就是說鏡像server可能也會中止響應。這會致使搭建鏡像的初衷蕩然無存。畢竟搭建鏡像主要就是針對這樣的狀況。
在企業級應用中。很是少僅僅使用單純的一種高可用技術,可能會使用鏡像搭配複製、日誌傳輸甚至集羣。
當混合使用的時候,需要更嚴謹的測試。興許將會提到。
除了瞭解鏡像環境的硬件部分,也要了解軟件部分,也就是執行在這個環境下的應用程序。這些應用中,有些是「黑盒」,特別是第三方軟件。對於這方面的內容,需要考慮的有:
假設需要支持鏡像。應用程序需要使用SQL Native Client、ADO.NET 2.0 Data Provider或者JDBC 1.1 Driver for SQL Server。並且鏈接字符串需要使用Failover partner屬性。
假設搭建了鏡像。而不加入Failover Partner屬性,那麼就要每次在Failover時手動改動應用程序的鏈接字符串。這會影響程序的業務持續性。
假設如DTS包、SSIS包或者外部應用使用了不支持鏡像的鏈接協議,需要評估在進行Failover的時候的影響還要制定應對策略。常見的處理手段是把這些組件拷貝到鏡像server並配置鏈接到鏡像庫中。
鏡像是庫級的高可用方案,假設應用程序需要使用多個數據庫協同執行時。僅對一個庫作鏡像是不可行的。針對這樣的狀況。可以把所依賴的所有庫都作鏡像,並且使用觸發器檢測鏡像狀態。僅僅要有一個庫的狀態知足Failover。就強制把所有庫都進行Failover。這需要額外的編程。
假設應用程序依賴本機server的資源,Failover會致使應用程序出現意外,針對這樣的狀況。可以考慮把外部資源放到共享文件夾上,並用UNC地址訪問。