一、簡介
“數據庫鏡像”是Sql Server 2005推出的一個主要用於提高數據庫可用率的軟件解決方案。鏡像是基於每個數據庫執行的,僅適用於使用完整恢復模式的數據庫。簡單恢復模式和大容量日志恢復模式不支持數據庫鏡像。
數據庫鏡像是通過維護一個熱備用服務器而發揮作用的。在一般的鏡像會話期間,如果生產服務器出現故障,客戶端應用程序可以通過重新連接到備用服務器來快速進行恢復。
二、前提條件
1、准備好服務器,保證數據庫版本至少是Sql Server 2005 SP1,當然最好是最新版本,老的版本測試不行!
2、保證需要鏡像的數據庫為完全恢復模式
3、配置域環境,數據庫鏡像使用域環境會比較方便,感覺比使用證書要省事
4、設置sql server的服務以域賬號運行 How?
5、選擇鏡像方案,鏡像服務可以使用三個數據庫實例(主、鏡像、見證)也可以使用兩個數據庫實例(主、鏡像),實際使用環境中每個實例應該是運行在不同的服務器上。如果使用見證服務器的話好處是可以實現自動的故障轉移,但是需要使用3台服務器,而且至少要保證其中2台服務器是可用的,因為如果鏡像服務器和見證服務器同時當機,即時主服務器沒有任何問題也是無法對外提供服務的。我這里只是為了實現數據庫的鏡像,做一個實時的數據庫備份所以沒有使用見證服務器,如果主服務器宕機需要手動切換鏡像服務器為主服務器。
三、具體步驟
1、在主服務器完整備份需要鏡像的數據庫,在鏡像服務器以“不對數據庫執行任何操作,不會滾未提交的事務。(RESTORE WITH NORECOVERY)”的狀態恢復。然后備份事務日志,以相同的恢復狀態在鏡像服務器恢復事務日志。
2、在主服務器,選擇需要鏡像數據庫的鏡像功能,點擊“配置安全性”
3、選擇否,不包括見證服務器實例
4、選擇主體服務器實例
5、選擇鏡像服務器實例
6、如果主服務器實例和鏡像服務器實例是以不同的域賬戶運行的,需要輸入對應的賬戶,我使用的是相同的賬戶所以留空,二中有建立帳戶的腳步
7、配置完成
8、配置端點
9、點擊“開始鏡像”,完成
10、如果沒有提示任何錯誤,主服務器的數據庫會顯示“主體,已同步”,鏡像服務器的數據庫會顯示“鏡像,已同步,正在還原…”,數據庫鏡像服務配置完成
四、故障轉移
1、主機備機互換
在主機按“故障轉移”按鈕就可以了
2、如果主機宕機,需要啟用鏡像服務器當主服務器
在鏡像服務器執行
USE master;
ALTER DATABASE 數據庫名 SET PARTNER FORCE_SERVICE_ALLOW_DATA_LOSS;
然后按“故障轉移”按鈕就可以了
五、遇到的錯誤
1、“消息 1418,級別 16,狀態 1,第 1 行 服務器網絡地址 "TCP://機器名或IP地址:端口號" 無法訪問或不存在。請檢查網絡地址名稱,並檢查本地和遠程端點的端口是否正常運行。”
這個很有可能是在鏡像服務器恢復數據庫時沒有選擇“不對數據庫執行任何操作,不會滾未提交的事務。(RESTORE WITH NORECOVERY)”,應該是由於沒有權限導致的,也就是在服務器和鏡像服務器中沒有設置正確的登錄名或設置了但提示了警告!
詳細解決方法見<二>
2、鏡像數據庫 "house" 包含的事務日志數據不足,無法保留主體數據庫的日志備份鏈。如果沒有從主體數據庫進行日志備份或者沒有在鏡像數據庫上還原日志備份,則可能會出現這種情況。(Microsoft SQL Server, 錯誤: 1478)
出現這個錯誤是由於沒有備份和恢復事務日志
3、默認情況下,數據庫鏡像是被禁用的。
這個是由於沒有打補丁的原因,以為Sql Server 2005剛推出的時候鏡像功能是作為評估使用的所以默認是關閉的,SP1以后就可以正式使用了
4、數據庫 "house" 的伙伴服務器實例和見證服務器實例均不可用。請在至少其中一個實例變為可用后重新發出命令。
這個問題就比較詭異了,用虛擬機實驗完成后在生產環境部屬出現此問題,在網上搜了個遍,也沒找到解決辦法,最后在一個論壇看到也加了跟蹤標志1400竟然通過了,可是我已經打了SP3,實在不太明白。
六、跟蹤標志
跟蹤標志用於臨時設置特定服務器的特征或關閉特定行為。 例如,如果啟動 SQL Server 2005 的一個實例時設置了跟蹤標志 3205,將禁用磁帶機的硬件壓縮。 跟蹤標志經常用於診斷性能問題,或調試存儲過程或復雜的計算機系統。具體參見MSDN
http://msdn.microsoft.com/zh-cn/library/ms188396.aspx,不過MSDN好像沒有1400的說明,可能比較老了已經沒有1400這個標志了,網上搜了一下
1400
啟用數據庫鏡像端點的創建功能,在設置和使用數據庫鏡像時必須使用該功能。啟用數據庫鏡像端點的創建功能,在設置和使用數據庫鏡像時必須使用該功
能。只有在啟動服務器實例時使用了 -T trace# 啟動選項,才可以設置該跟蹤標志。
設置方法:
DBCC TRACEON (1400)或者在數據庫服務加啟動參數-T1400
轉自51:http://dqw3721.blog.51cto.com/112726/390327/














