SQL Server 2012 AlwaysOn
SQL Server 2012 AlwaysOn
緣由:SQL Server 2012開使提供另一種新的HA技術 Always On。一直以來只是知道有這樣技術的存在,但並沒有去實做過。日前因服務的單位可能會有Always On這樣的HA機制需求,因此筆者做了一個LAB,也將此一流程記錄下來,以免日後忘記了。
環境:
三台OS為Windows Server 2008 R2,資料庫為MS SQL Server 2012。
SQL1主機:SQL2012資料庫。
SQL2主機:DC主機,因Always On需搭配WSFC(Windows Server Failover Clustering)環境,
因此也需要建立一個AD。
2019/8/21補充(感謝James大師的提醒)
注意 : 我在AD會建立一個網域的帳號並讓SQL1及SQL3的主機都用此帳號來當SQL的服務啟動帳號。
SQL3主機:SQL2012資料庫。
流程:本實驗會分為兩大部分,第一個為WSFC的建立。然後接下來才設定AlwaysOn。
叢集建立Step1:
建立叢集之前請先將Windows網域環境先建立好,在此我們直接跳過網域建立的流程。首先我們先在兩部SQL主機上安裝『容錯移轉叢集』的功能,如下圖紅色圈選處。
叢集建立Step2:
開啟『容錯移轉叢集管理員』後,點滑鼠右鍵選擇『建立叢集』功能。
叢集建立Step3:
在建立叢集精靈中請選取欲建立叢集的主機,如下圖可先點取『瀏覽』然後選擇電腦後再按下『新增』,就可以在『選取的伺服器』中(下圖紅色圈選處)看見我們選進來的主機,完成後請按『下一步』。
叢集建立Step4:
在建立叢集精靈中有一個驗證步驟(如下圖),我選擇略過驗證,後按『下一步』。
叢集建立Step5:
如下圖,請輸入您欲建立之叢集的名稱(本實驗命名為SqlCluster),而針對此叢集也請一併設定該對外服務之網路位址(本實驗設定為192.168.1.111),設定完成後請按『下一步』。
叢集建立Step6:
如下圖,精靈會請您確認欲建立之叢集設定,確認完成後請按『下一步』。
叢集建立Step7:
如下圖所示您已經完成叢集建立,請按『完成』。
叢集建立Step8:
如下圖所示我們已經完成SqlCluster這一個叢集的建立,該叢集底下有兩個節點,分別為SQL1跟SQL3。
叢集建立Step9:
接下來的步驟我們要在該叢集中建立一個仲裁磁碟,如下圖所示我們在叢集上點選『右鍵』然後選擇『其他動作』再選擇『設定叢集仲裁設定』。
叢集建立Step10:
在設定仲裁精靈中的『選取仲裁設定』,我們如下圖所示選擇『節點與檔案共用多數』,這個實驗我是在DC主機上分享一個Shared Folder來當仲裁,而不是使用仲裁磁碟,完成後請按『下一步』。
叢集建立Step11:
DC主機上Shared Folder名稱為ClusterSync,如下圖所示將該資料夾路徑填入,也可以使用『瀏覽』來搜尋。注意:該Folder需開放存取權限給網域中的SqlCluster$帳號,完成後請按『下一步』。
叢集建立Step12:
確認設定資料,確認完成後請按『下一步』。
叢集建立Step13:
完成叢集仲裁設定,請按『完成』。
叢集建立Step14:
如下圖所示,完成叢集仲裁設定後在紅色圈選處可以看見『仲裁設定』變成『節點與檔案共用多數』,路徑為\\SQL2\ClusterSync。
完成上述步驟,我們就已經設定好WSFC的環境,接下來就可以設定AlwaysOn了。
AlwaysOn建立Step1:
首先我們先到『SQL的組態管理員』中點選『SQL Server服務』然後點選『SQL Server(MSSQLSERVER)』右鍵選『內容』,接下來我們點選『AlwaysOn高可用性』頁籤,然後將『啟用AlwaysOn可用性群組』勾選起來。
AlwaysOn建立Step2:
開啟SSMS後點選『AlwaysOn高可用性』節點,按下滑鼠『右鍵』選擇『新增可用性群組精靈』。下圖為精靈畫面,請鍵入您欲建立的群組名稱,本實驗我命名為MyAg1,完成命名後請按『下一步』。
AlwaysOn建立Step3:
在下圖這一個畫面中則是讓您選取這一個可用性群組(Available Group)中要包含哪一些資料庫,其中『狀態』(下圖紅色圈選處)會顯示該DB是否符合必要的條件,完成選取後請按『下一步 』。
AlwaysOn建立Step4:
在下圖指定複本的設定中,需要設定的地方比較多,首先我們先點選『複本』頁籤。在這一個畫面中我們可以加入多個複本進來(目前主要的為SQL3,但我們要加入SQL1當複本),如欲新增一個複本請按『加入複本』。
AlwaysOn建立Step5:
上一步驟按下『加入複本』按鈕後,會彈跳出SQL SERVER登入視窗,此時我們鍵入複本想關資料後,請按下『連接』按鈕。
AlwaysOn建立Step6:
如下圖所示SQL1這一個複本被加入了。
AlwaysOn建立Step7:
接下來我們點選『端點』頁籤,如下圖所示AlwaysOn是使用5022 Port,圖中是預設值,當然您可以根據您的網路配置讓AlwaysOn跑另一張網卡,那下圖中的端點URL就可以改成用另張網卡IP。
AlwaysOn建立Step8:
備份喜好設定這裡是用預設『慣用次要』,至於每個選項的功用為何請參考MSDN說明,URL如下
http://msdn.microsoft.com/zh-tw/library/hh710053(v=sql.120).aspx#SSMSProcedure。
AlwaysOn建立Step9:
點選『接聽程式』頁籤,此頁面設定該AG的服務名稱及服務IP和通訊PORT,本實驗中該AG的DNS我也是設為MyAg1,IP設為192.168.1.101,而服務的Port一樣設為1433,設定完成後請按『下一步』。
AlwaysOn建立Step10:
這一個步驟我們要指定一個網路共用資料夾讓所有的複本主機的可以存取,AG主要機器會備份資料庫到這一個資料夾中,然後由各複本撈回去還原,完成設定後按『下一步』。
AlwaysOn建立Step11:
這一個步驟SQL會驗證所有條件是否符合,如果所有驗證都通過,請按『下一步』。
AlwaysOn建立Step12:
這一個步驟SQL會顯示摘要,如都沒有錯誤,請按『完成』。
AlwaysOn建立Step13:
開始建置Available Group MyAg1。
AlwaysOn建立Step14:
我們的 MyAg1可用性群組已經建立完成,按下『關閉』吧。
AlwaysOn建立Step15:
回到SSMS中,我們可以看見 MyAg1可用性群組已經建立完成(下圖紅色圈選處),而下圖右邊是SSMS提供用來顯示AlwaysOn狀態的儀表版,看見綠色的勾勾吧,代表該AG目前正常。
AlwaysOn建立Step16:
此時我們回到『容錯移轉叢集管理員』中,在『服務與應用程式』節點中可以看見MyAg1已經在服務了歐。目前該擁有者為SQL3。
AlwaysOn建立Step17:
如下圖所示我們用SSMS登入剛剛建立完成的MyAg1(也可以輸入IP:192.168.1.101,DNS跟IP是我們在AlwaysOn建立Step9設定的),完成輸入後按下『連接』。
AlwaysOn建立Step18:
如下圖所示我們在SSMS中可以比對MyAg1跟SQL3,可以發現其實是同一台SQL主機,其中可以看見ddd跟test2這兩個資料庫狀態為(已同步處理)。
AlwaysOn建立Step19:
接下來我們要驗證一下是否可以正常FailOver到另一個節點,如下圖所示,目前服務在SQL3身上,我們試著將它移動到SQL1上去。
AlwaysOn建立Step20:
移轉之前會彈跳出確認識窗。
AlwaysOn建立Step21:
我們可以從下圖看見擁有者已經轉成SQL1了。
AlwaysOn建立Step22:
此一步驟中我故意到SQL1去停掉SQL Server的服務,然後我們看看服務主體是不是會跳回SQL3。
AlwaysOn建立Step23:
服務自動回到SQL3了,後來我也有利用停掉網卡的方法來測試,該服務也是會正常FailOver,所以實驗算成功了。
Rock Chang
2014/3/31
我是ROCK
rockchang@mails.fju.edu.tw