星期一, 8月 10, 2015

[轉載] Windows Server (FailOver Cluster) + SQL 2012 AlwaysOn 的注意事項

Ref(轉載自) :

http://www.dotblogs.com.tw/mis2000lab/archive/2013/12/16/sql_2012_alwayson_availability_group-again.aspx

 

SQL 2012起,改用 AlwaysOn來進行HA(高可用性)與DR(災難復原)

取代了以前的 Mirror

這個版本需要搭配OSWindows 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 

http://blogs.technet.com/b/canitpro/archive/2013/08/20/step-by-step-creating-a-sql-server-2012-alwayson-availability-group.aspx 

 

Step-By-Step: Creating a SQL Server 2012 AlwaysOn Availability Group

MVP Edwin Sarmiento 

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

 

沒有留言:

LinkWithin-相關文件

Related Posts Plugin for WordPress, Blogger...