2011-03-15 53 views
1

我正在編寫我的第一個.NET MVC應用程序,並使用Code-First方法。我最近學會了如何使用Mirror Database和Witness(不要與Failover Clusters混淆)來執行故障轉移過程,從而爲高可用性配置兩個SQL Server安裝。我認爲這將是一個很好的時間通過將我的網絡應用程序安裝到高可用性的數據庫中來練習這兩件事。使用鏡像數據庫爲HA創建.NET MVC Web應用程序

現在,對於我所瞭解的(糾正我,如果我是錯誤的)在鏡像配置中,如果第一個故障轉移到輔助數據庫,但您的應用程序還需要更改連接字符串以引用輔助服務器。

什麼是在Web.config(或其他地方)都有地址並選擇正確的連接字符串的最佳方法?

回答

1

我沒有連接到鏡像數據庫的經驗,所以這是一切異端! :)

只要您將連接字符串中的FailoverPartner屬性傳遞給您,它可能就不必做任何特殊的事情。最重要的是,您可能需要額外的錯誤處理來嘗試新連接,因此數據提供實際上會在新連接中使用名稱。

Connecting Clients to a Database Mirroring Session似乎有一些很好的信息開始。你有沒有機會檢查一下?

如果不是這樣,它的存在與Making the Initial Connection他們介紹ConnectionString財產屬性的FailoverPartner屬性。

Reconnecting to a Database Mirroring Session表明,在任何客戶端斷開由於故障,客戶將需要捕獲該異常,並準備重新連接:

應用程序必須意識到 錯誤。然後,應用程序需要 來關閉失敗的連接,並且使用開啓一個新連接,並使用 連接字符串屬性

如果FailoverPartner屬性可用,則此過程應該是相對透明的到客戶端。

如果上述不起作用,那麼您可能需要在應用程序層實際引入一些邏輯以跟蹤每個主節點,故障切換節點和連接字符串的位置,並準備保留該信息在某處 - 與數據訪問提供商應該爲我們所做的一樣(睜大眼睛)。

還有一個帶有Sql Server的ServerFault post on database mirroring,它可能從具有其他參考信息的操作視角中感興趣。

希望有實際經驗的人會備份任何這些!

+0

請查看關於問題的更新鏈接:)。 – PedroC88 2011-03-15 03:06:24

+0

我更新了自己的回覆,希望能有更多的目標。 :) – 2011-03-15 11:45:03

0

這可能是完全離開基地,但如果您的網絡服務器和數據庫服務器之間有負載平衡器

使用基本運行狀況檢查技術(例如ping等),Load Balancer將在其池中具有兩個數據庫。

然後,您的配置只需指向負載均衡器的IP,而不需要更改。

這就是這些網絡設備的優點。編制框架(ASP.NET)的工作不是爲了確定服務器的運行狀況。

+0

我讀過的負載均衡器是基於硬件的,主要用於非常昂貴的集羣配置。在這種情況下,我使用的是主動/被動方法,可以輕鬆安裝到物理+虛擬機conf上。請記住,我只是將其作爲學習練習,而我並不打算購買任何硬件。 – PedroC88 2011-03-15 02:39:17

+0

@ PedroC88 - 您可能能夠使用兩個虛擬機實例模擬HA數據庫,每個虛擬機實例運行一個sql實例,使用主機上的共享存儲也許?您可能可以在兩臺虛擬機之間爲集羣所需的「心跳」地址設置專用網絡。可能有一些問題,但應該是一個很好的學習練習! – 2011-03-15 02:58:15

+0

@Zach - 我想到了,但我在我的個人筆記本電腦上運行了這一切,最大的成就是6 GB的低延遲RAM。運行兩個高性能虛擬機將會爲我的目的提供太多資源支持。 – PedroC88 2011-03-15 03:05:58

相關問題