Failover Clustering vs Database Mirrioring
- Failover Clustering 架構於作業系統上的容錯移轉。
- Failover Clustering 需要一組 Shared Disk進行。
- SQL Server Failover Clustering 是以一整個 Instance 為主,而 Database Mirrioring是以單一的Database為主進行控管。
- SQL Server Failover Clustering主要為AP (Active/Passive) Mode,所以另一台主機只能待命無法使用(如果您需要將Failover變成 A/A Mode的話,可以參考 [SQL Server - 雙主動模式叢集環境架設]),而Database Mirroring只有設定鏡像的資料庫不能讀取,但是可以透過資料庫快照來讓 Mirro 端的資料庫可以進行唯讀的動作。
- 如果 Database Mirrioring 要作到自動容錯移轉時,需要第三台主機進行監控,但只需 Windows XP 或 Windows 7的作業系統,而資料庫只需 Express 免費版即可。
Database Mirroring 作業模式:
鏡像作業模式共有兩種,請參考下列說明。
第一種模式 (「High-Safety Mode」) 可支援同步作業。在高安全性模式下,當工作階段開始時,鏡像伺服器會儘快將鏡像資料庫與主體資料庫進行同步處理。一旦資料庫同步處理完成之後,交易將同時在兩個夥伴上進行認可,代價是會增加交易延遲性。
第二種作業模式 (「High-Performance Mode」) 則以非同步方式執行。鏡像伺服器會盡量跟上主體伺服器所傳送的記錄。鏡像資料庫可能會稍微落後主體資料庫。然而,在資料庫之間的間距通常很小。但是,若主體伺服器的工作負載很大,或鏡像伺服器的系統超載時,此差距就會變大。
配備說明:
第一台
角色名稱:Principal
電腦名稱:WIN-2008R2-1
OS:Windows 2008R2 Enterprise
DB:Windows 2008R2 Enterprise
說明:主要資料庫,資料庫復原模式(Recovery Mode)需設定成完整 (Full)。
第二台
角色名稱:Mirror
電腦名稱:WIN-2008R2-2
OS:Windows 2008R2 Enterprise
DB:Windows 2008R2 Enterprise
說明:鏡射資料庫,接收從主要資料庫的交易資料,但還原的過程中無法使用,如果想要使用時,可以透過資料庫快照即可間接使用即可。
第三台
角色名稱:Witness
電腦名稱:WIN7-CARYHSU-PC
OS:Windows 7 Home
DB:Windows 2008R2 Express
說明:如果你的 Database Mirroring 想要擁有 Auto Failover 的功能時,就需要透過此台電腦的監控來進行,由於此台電腦只負責監控,所以可以只安裝 Express 的版本即可,而作業系統也需要一般的作業系統即可。
範例說明:
在下列的範例中,為了可以實現 Auto Failover ,所以我將以 [High-Safety Mode] 進行,資料庫將以 Northwind 為例。
建立 Database Mirroring
1、建立 Mirror端資料庫。
1-1 先將 Principal 端的 Northwind 資料庫最後的備份複製到 Mirror 電腦上,並進行還原,還原時,請記得選擇 [讓資料庫保持不運作,且不回復未認可的交易,可以還原其他交易記錄。(A)(RESTORE WHIT NORECOVERY)],這個步驟也是最容易疏忽的一部份,所以再請特別注意。
1-2 還原完成後,你可以看到資料庫的狀態會變成 [正在還原...]。
2、設定資料庫鏡像
2-1 選擇要設定鏡像的資料庫,然後點選滑鼠右鍵選擇屬性。
2-2 點選 [鏡像] -> [設定安全性]。
2-3 點選下一步。
2-4 由於是進行 [High-Safety Mode],所以請選擇 [是],然後選擇 [下一步]。
2-5 依照預設值,選擇 [下一步]。
2-6 由於 Database Mirroring 預設是透過 5022 的通訊埠,如果你希望更換成不同的通訊埠時,請記得在三台主機的通訊埠設定成相同,此處依照預設值,點選 [下一步]。
2-7 選擇第二台的主機 ,如通訊埠沒有更動時,此處依照預設值,點選 [下一步]。
2-8 選擇第三台的主機 ,如通訊埠沒有更動時,此處依照預設值,點選 [下一步]。
2-9 由於三台主機都有加入 Domain,所以請記得選擇一個網域帳號即可。
PS:如果你的主機沒有加入 Domain時,你有兩種方法可以進行,一種是三台的帳號密碼都相同,藉以矇過系統,另一種是透過憑證的方式進行,詳細的作法再請參考 [Setting Up Database Mirroring Using Certificates] 。
2-10 設定完成後,即會秀出總結的資訊,再點選 [完成]。
2-11 精靈設定完成後,即時會提供你是否要立即啟動鏡像,可此時啟動,或是稍後再手動啟動即可。
2-12 設定完成後,你即會看到目前的 [作業模式] 會設定成 [具有自動容錯移轉的高安全性 (同步)]。
2-13 此時再切換到資料庫清單中,即可看到目前 Database Mirroring 的狀態。
3、系統測試與模擬 Failover
3-1 開啟資料庫屬性,點選 [容錯移轉],讓兩台主機的身份互換。
3-2 點選後,你就會看到 Failover 已完成,主體與鏡像的身份也已進行切換了。
參考連結:
Database Mirroring Overview
http://msdn.microsoft.com/en-us/library/ms189852.aspx
Example: Setting Up Database Mirroring Using Certificates (Transact-SQL)
http://msdn.microsoft.com/en-us/library/ms191140.aspx
關鍵字:Database Mirroring、SQL Server、Principal、Mirror、Witness
請教一下應用程式在使用Database Mirroring的時候有兩個DB ip當一台掛掉另一台DB會起來沒錯,但似乎應用程式必須改IP才連的到DB?
回覆刪除如你所說,當你使用的模式為 [High-Safety Mode],而且有Witness Server時,DB掛掉就會自動切到另一台,關於程式的部份,其實你可以在 Connection String中加入Failover_Partner的關鍵字,當第一台發生問題時,即會自動連線到第二台,相關參考如下:
刪除Making the Initial Connection to a Database Mirroring Session
http://msdn.microsoft.com/en-us/library/ms366348(v=sql.105).aspx
Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download Now
刪除>>>>> Download Full
Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download LINK
>>>>> Download Now
Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download Full
>>>>> Download LINK mo
不好意思..請問 我在執行啟動鏡像的按紐時, 卻出現錯誤(端點組態中已停用資料庫鏡像傳輸)請問這部分該如何設定呢 感謝
回覆刪除可否再詳細的描述一下你的OS與SQL的版本,另外請檢查一下SQL Server Error的錯誤訊息與代碼為何,是否為1486等,請提供多一點的訊息給我,我再協助你排除。
刪除Sorry,後來發現是端點沒開啟
刪除使用這個之後才開啟
ALTER ENDPOINT [Mirroring]
STATE = STARTED
AS TCP (LISTENER_PORT = 5023)
FOR database_mirroring (ROLE = PARTNER);
GO
感謝您!
請問,要做到High-Safety Mode 自動轉移,用2003 Server 和 SQL Server 2005 SP1 ,就可以做了嗎??
回覆刪除Hello 你好:
回覆刪除的確如你所說的環境即可達到,詳細的說明,你也可以參考下列的連結:
Hardware and Software Requirements for Installing SQL Server 2005
http://msdn.microsoft.com/en-us/library/ms143506(v=sql.90).aspx
Database Mirroring in SQL Server 2005
http://technet.microsoft.com/en-us/library/cc917680.aspx
請問, 我 3 台主機並未加入AD, administrator 帳密皆相同
回覆刪除在步驟2-9您有提到可用3台帳號密碼都相同的方式處理,
我使用Mirror1/administrator 填入主體/鏡像/見證欄位, 僅主體成功另2個顯示警告
使用Mirror1/administrator, Mirror2/Administrator..填入, 3個都顯示警告
請問, 我應該填入什麼樣的帳號型式呢? 謝謝.
在主體/鏡像/見證服務帳戶內填入 administrator 一樣會出現警告訊息, 'administrator' 不是有效的 Windows NT 名稱。請提供完整的名稱: 。 (Microsoft SQL Server, 錯誤: 15407)
刪除您好, 我的問題已參考這篇文章順利解決, 謝謝. http://social.technet.microsoft.com/Forums/zh-TW/sqlservermanagementzhcht/thread/37dc5874-08c6-4b87-baf2-9e36a4d61868/
回覆刪除請教一下,執行啟動鏡像的按紐時,出現此錯誤訊息,"伺服器網路位址 "TCP://MIRRORING.teraxtal.com:5022" 無法連上或不存在。請檢查網路位址名稱,並檢查本機和遠端端點的通訊埠是否可正常運作。 (Microsoft SQL Server, 錯誤: 1418)",請問這該如何解決? 感謝
回覆刪除詳細的情況可能要看你的環境而定或是有其他的資訊,你可以先參考下列的連結進行處理。
刪除MSSQLSERVER_1418
https://msdn.microsoft.com/en-us/library/aa337361.aspx
Database Mirroring Error 1418 Troubleshooter
http://blogs.msdn.com/b/grahamk/archive/2008/12/08/database-mirroring-error-1418-troubleshooter.aspx
作者已經移除這則留言。
回覆刪除Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download Now
回覆刪除>>>>> Download Full
Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download LINK
>>>>> Download Now
Caryhsu - 學無止盡: Sql Server - 如何建立 Database Mirroring >>>>> Download Full
>>>>> Download LINK