如果我們的SQL Server要保證高可用性,那麼可以採用容錯移轉叢集。最簡單的容錯移轉叢集是兩台伺服器,一台做活動的伺服器,另一台做待命伺服器,這就是AP模式的Cluster。另外一個模式就是AA模式,也就是兩台伺服器都是運行SQL Server實例。
SQL Server不像Oracle一樣有RAC,所以不可能說兩台伺服器同時運行同一個實例,想要兩台伺服器都使用起來的話,那麼只有各自運行一個實例。
那麼我們企業裡面要做Cluster的時候,到底應該做AP模式的還是做AA模式的呢?
AP模式是在兩台伺服器上安裝一個資料庫實例,只有一台伺服器負責該資料庫實例的全部運算和操作,另外一台伺服器閒置。當活動的伺服器發生故障時,系統自動啟動另一台伺服器的實例,實現容錯移轉。AP模式的最大缺點就是資源利用率低,只有一台伺服器在被使用。
AA模式是在兩台伺服器上安裝兩個資料庫實例,每台伺服器分別運行一個資料庫實例。當某一台伺服器發生故障時系統將把發生故障的伺服器上的資料庫實例切換到另一台伺服器上運行,也就是說另一台伺服器上同時運行兩個實例,當伺服器恢復正常後再手動將一個資料庫實例切換回另一台伺服器。AA模式保證了兩台伺服器資源都被利用。
關於1個資料庫實例中2個資料庫和2個資料庫實例中各1個資料庫的區別:
1. 1個資料庫實例中的2個資料庫都必須運行在同一台伺服器上,所以如果2個資料庫都具有大量的運算佔用大量的資源,則可能造成資料庫伺服器壓力過大,運行緩慢;而2個實例中各1個資料庫則可以將每個實例部署在不同的伺服器上,各自使用各自伺服器的資源,相互沒有影響。
2. 1個實例中2個資料庫的相互訪問比較簡單,可以對2個資料庫進行事務操作;而2個實例中的資料庫要相互訪問則需要通過連結伺服器或者其他方式來訪問,如果要在2個實例中進行事務操作則需要啟用分散式交易MSDTC,使用分散式交易將會使事務時間變長,事務出現錯誤的可能更大,甚至出現各種靈異的錯誤,所以一般不推薦使用分散式交易。
所以,如果我們在有足夠資源(也就是很有錢的意思)的情況下,而且想簡單一點,那麼我們就做AP模式。畢竟AA模式比AP模式更複雜,更難於管理。如果我們想充分利用伺服器資源,伺服器有限,而且多個資料庫之間不存在分散式交易的話,那麼用AA模式是一個不錯的選擇。
以以前的經驗來看,最好不要使用分散式交易,會遇到各種各樣靈異的問題。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()