2015年9月2日 星期三

S小魚仔S SQL Server® 2012 (Database Mirroring) (High-Performance Mode)

鏡像作業模式共有兩種

第一種 模式 (「High-Safety Mode」) 可支援同步作業。在高安全性模式下,當工作階段開始時,鏡像伺服器會儘快將鏡像資料庫與主體資料庫進行同步處理。一旦資料庫同步處理完成之後,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性,需要「Witness」伺服器。


第二種 模式 (「High-Performance Mode」) 則以非同步方式執行。鏡像伺服器會盡量跟上主體伺服器所傳送的記錄。鏡像資料庫可能會稍微落後主體資料庫。然而,在資料庫之間的間距通常很小。但是,若主體伺服器的工作負載很大,或鏡像伺服器的系統超載時,此差距就會變大,不需要「Witness」伺服器。

實作「High-Performance Mode」(無網域) 架構圖,如下




1. 設定「防火牆」,「SQL-1」 與 「SQL-2

啟用「檔案及印表機共用
啟用「TCP - 1433、5022

啟用「檔案及印表機共用

在「防火牆」內「進階設定」設定「TCP - 1433、5022







2. 「SQL-1」 與 「SQL-2
輸入「Services.msc」=>「SQL Server (MSSQLSERVER)」服務 => 修改  帳戶 權限為「.\administrator」(本機帳戶) 並「重新啟動
PS
SQL-1」與「SQL-2」需要使用相同「Local\Account

 Windows 服務 找到「SQL Server (MSSQLSERVER)」服務,設定「啟用」帳戶權限

輸入「本機」帳戶 與「密碼



重新啟動」服務


3. 「SQL Server Data Base (SQL-1)」(Principal) 需要 匯出「完整備份」、「交易紀錄

需要檢查「DataBase」來源「復原模式」必須為「完整

進行「資料庫」備份

備份「完整模式」,備份出來檔案需要自行加入「副檔名」.bak

備份「交易紀錄」,備份出來檔案需要自行加入「副檔名」.bak


4.「SQL Server Data Base (SQL-2)」(Mirror) 需要 匯入「完整備份」、「交易紀錄」,還原選項為「Restore With Norecovery

複製「備份檔」(完整)、(交易紀錄),放置「SQL-2

點選「資料庫」節點,進行「還原資料庫

點選「裝置」=>「...」=> 選擇「Full.bak」、「Full_Log.bak

點選「選項」頁籤 =>  復原狀態「Restore With Norecovery

回復完成,顯示「正在還原....」,這是 OK


6. 設定「SQL Server Data Base」(Principal),啟用「鏡像


透過「SQL Server Management Studio」(SSMS),登入「SQL-1」 並加入「SQL-2


點選「SQL-1」來源 資料庫,啟用「鏡像」(Mirror)

點選「設定安全性

點選「下一步

不需要「見證伺服器」(Witness Server)

主體「伺服器」選擇「SQL-1

會自動帶上「SQL-2」,但是需要透過「連接」進行「驗證

使用「Windows 驗證
PS
注意「SQL-1」、「SQL-2」帳號 密碼 需要一致

驗證過後,點選「下一步

由於「Mirror」環境沒有「網域」(Domain),直接保留「空白」即可。

點選「完成

驗證通過 ^_^

點選「啟動鏡像

點選「

成功設定完成「High-Performance Mode」Mirror

SQL-1」為「Principal」,「SQL-2」為「Mirror


7. 檢視「資料庫鏡像監視器


點選「啟動資料庫鏡像監視器」,可以顯示「資料庫」複寫狀態



8.  如何移轉「Principal」與「Mirror」DataBase


在「鏡像」功能,可以做「容錯移轉


點選「

使用「F5」 刷新,狀態 就可以即時改變「Principal」與「Mirror

如果您有遇到此錯誤訊息,記得啟用 (SQL-1)與(SQL-2)「檔案及印表機共用」本機防火牆。


參考資料
CaryHsu - 學無止盡」-「安裝 SQL Server 時,遇到NetFx3錯誤處理方式
CaryHsu - 學無止盡」-「SQL Server - 如何建立 Database Mirroring
51cto.com」-「SQL2012 镜像部署
51cto.com」-「实现 SQL Server 2012 镜像

1 則留言:

  1. 感謝您的文章,

    讓我可以不用透過witness去做Mirroring的動作!

    回覆刪除