Ref(轉載自) :
SQL 2012起,改用 AlwaysOn來進行HA(高可用性)與DR(災難復原)
取代了以前的 Mirror
這個版本需要搭配OS(Windows Server 2008 ~ 2012皆可)的 FailOver Cluster(災難復原叢集)
兩者搭配才能成功。
下圖是微軟的官方文件(PDF檔),各種SQL的備援技術,
資料來源 http://msdn.microsoft.com/en-us/library/hh781257.aspx
軟體:Windows Server 2008(R2) 企業版與 Windows Server 2012 標準版 我都有測試過
SQL Server 2012 企業版 ,以上軟體不必用到 Data Center版。
第一次安裝SQL時,使用「一般安裝」即可,不需使用 Cluster安裝
前置作業:
=====================================================================================
首先,"不"需要安裝 iSCSI,也"不"需要額外的 Storage。
每一台DB (SQL Server)的「定序」必須相同。
設定的人員(帳號)必須使用AD帳號,不能用本機的Administrator。
權限要夠高,不然會卡關(難怪大部分的網路文件,他們都用AD管理員在安裝)
您至少要有權限可以在「AD裡面,增減電腦名稱(電腦物件)」才能作下去。
設定一個共用的AD帳號,權限高一點。
讓這個帳號控制(啟動)這三台DB的「SQL服務」。
假設我有三台DB要串起來,您需申請好幾個IP(靜態、固定)
- 三個IP,給這三台DB使用,讓它們可以上網、加入AD網域。
- 另外三個 "新"IP 跟上面三台電腦搭配,還有一個電腦名稱(AD裡面的電腦物件名稱)
這是為了最後的 Listener使用。(這是給寫程式的人用的,讓它們的程式可以透過Listener連上DB) - 還有一個IP 與 一個電腦名稱(AD裡面的電腦物件名稱),要留給 Windows FailOver Cluster使用。
三台串連的DB (AlwaysOn)需要有七個IP、五個電腦名稱(AD裡面的電腦物件名稱)。
找一台電腦,設定一個「共享目錄」。
這個目錄的「讀寫」權限,請設定上面的三台DB的「電腦名稱」或是相關的人員帳號。
Windows Server 2008起,防火牆的設定比較嚴格。
相關的 Port如果會用到,請您要打開,不然就會卡關。例如 1433 (SQL Server)或 5022 (AlwaysOn的 EndPoint會用到)
=====================================================================================
完成上面的前置準備,您的安裝過程會順利很多。
這篇文章的SOP步驟,是最簡單、最好實現的。 MVP --- Edwin Sarmiento
Step-By-Step: Creating a SQL Server 2012 AlwaysOn Availability Group
19 Aug 2013 9:04 PM
感謝MVP: Edwin Sarmiento分享
使用可用性群組(AG)、Listener,程式該怎麼寫DB連結字串呢?
請看 http://technet.microsoft.com/zh-tw/library/hh213417.aspx
使用接聽程式連接到主要複本
若要使用可用性群組接聽程式,連接到主要複本進行讀寫存取,連接字串要指定可用性群組接聽程式 DNS 名稱。 如果可用性群組主要複本變更為新複本,使用可用性群組接聽程式網路名稱的現有連接會中斷連接。 然後對可用性群組接聽程式的新連接會被導向至新的主要複本。 ADO.NET 提供者 (System.Data.SqlClient) 的基本連接字串範例如下
Server=tcp: AGListener,1433;Database=MyDB;IntegratedSecurity=SSPI
使用接聽程式連接到唯讀次要複本 (唯讀路由)
指定唯讀應用程式意圖之 ADO.NET 提供者 (System.Data.SqlClient) 的連接字串範例如下:
Server=tcp:AGListener,1433;Database=MyDB;IntegratedSecurity=SSPI;ApplicationIntent=ReadOnly
在這個連接字串範例中,用戶端嘗試連接到通訊埠 1433 (如果可用性群組接聽程式是在 1433 上接聽,也可以省略此通訊埠編號) 上名為 AGListener 的可用性群組接聽程式。 若連接字串的 ApplicationIntent 屬性設定為 ReadOnly,會將此字串設為「讀取意圖的連接字串」(Read-Intent Connection String)。 如果沒有此設定,伺服器就不會嘗試唯讀路由連接。
江湖一點訣!說破不值錢!
做完以後,才發現不過如此,但也搞了一個多月。
市面上的SQL書籍都沒提到這一點,倒是網路上很多前輩分享了經驗談
(雖然大多沒幫上忙,可能是大家的架構、應用環境不同。還是謝謝大家)
這不是SQL 2012最大的變革嗎?怎麼書上都沒寫?
難道是要留給我出書、上課的題目嗎?
如果要為這個主題寫書,大概五十頁(文字與圖片)搞定
但要賣一本五千元(Know-How的價值,遠比書本厚薄還關鍵)
原來很多人不願意分享、藏私,就是為了這樣
其實很簡單、也不難,
但不點破你、不分享幾個小關鍵,要您花上一兩個月找資料、測試、不斷撞牆.....
這個時候,更加欽佩網路上這些熱血、勇於分享的前輩了
大公無私,的確是IT人的典範。
謝謝網路上每一位分享的人,分享,讓"知識"更加偉大!
國家機密、名人隱私,都有人爆料了。
知識,能藏多久?尤其是IT知識?
放久了不但不會增值,只會「過時」。........因為IT日新月異
分享,讓"知識"更加偉大!
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
沒有留言:
張貼留言