[SQL SERVER][Denali]SQL Server 2012: AlwaysOn Availability Groups

[SQL SERVER][Denali]SQL Server 2012: AlwaysOn Availability Groups

SQL Server 2012 好文比賽得獎公布

文章參考來源:SQL SERVER 好文比賽

主題:SQL Server 2012: AlwaysOn Availability Groups (SQL 142)

 

寫這篇突然讓我想起備份真的很重要~~~~><"

去年我參加ITHOME鐵人賽連續30天分享SQL2012新特性文章

當時本打算分享AlwaysOn新特性,

所以我在自己的電腦上建立3個VM自我練習架設AlwaysOn,

但連操一個禮拜後(測試500GB資料庫執行Failover是否正常、應用程式自動導向、select 、Inser效能....等),

服役一年多的WD硬碟無預警掛點(Bios都抓不到@@),

相關VM檔案我也沒備份,還有一些之前管理的Scripts和電子書也都沒了(...鬱悶),

所以之後我就很少去摸AlwaysOn相關特性和操作(因為我不敢再操硬碟和同時執行多VM...),

得知微軟有提供VirtualLab環境,所以再次引起我對AlwaysOn的熱情,

也繼續加強自己對AlwaysOn熟悉度。

 

前言

SQL Server AlwaysOn 是SQL Server 2012新的高可用性方案,它結合高可用和災難復原的特性,

也提高資料庫和執行個體層級的可用性,同時針對企業重要的應用程式提供整體架構必需的9(5個9=>99.999%)。

 

AlwaysOn Availability Group在SQL Server 2012是一項新特性,

它加強Cluster架構下針對SQL Server執行個體操作FailOver的可用性和有效性。

 

透過這次學習你將知道如何使用SQL Server AlwaysOn設定高用可性解決方案。

 

學習目標

這次我們將學到使用AlwaysOn Availability Group來對應用程式資料庫提供高可用性,

你將依序練習以下每個部份

*針對已啟用Availability Groups的SQL Server設定Windows Server Failover Cluster

*在SSMS中使用Availability Group 精靈來設定Availability Group

*設定 Availability Group 監聽器並針對OLTP應用程式測試啟用透過監聽器自動重新連接導向。

*設定應用程式為唯讀應用程式,並且將應用程式導向到第二個活動中節點。

 

Exercise 1: Configuring a Windows Failover Cluster

使用Availability Group先決條件就是每個可用性複本都必須位在單一 Windows Server 容錯移轉叢集 (WSFC) 叢集的不同節點。

你將學習如何依照Availability Group 特性來建立windows cluster,

練習結束後你將了解建立一個Windows Failover Cluster 節點需要那些元件、

如何安裝Windows Cluster Service及如何設定多節點的Windows Failover Cluster。

 

設定防火牆

image

請使用Administrator權限執行。

ps:其他伺服器需重複相同步驟設定防火牆,才能確保伺服器之間網路溝通沒有問題(可互相存取執行個體)。

 

執行Failover Cluster Manager

image

 

執行Validate a Configruation

image

 

加入相關伺服器

image

 

查看驗證測試報告

image

完成組態驗證後且沒有問題後即可建立Cluster。

 

點選 Create a cluster

image

 

選擇相關伺服器

image

 

輸入叢集名稱

image

 

確認叢集狀態

image

IP Address請依Lab環境確認。

 

Exercise 2: Configuring an Availability Group

SQL Server 2012 AlwaysOn Availability Groups針對你的應用程式資料庫提供高可用性方案,

Availability Group 提供以群組為單位的故障轉移(也可以設定多個執行個體),可說將應用程式資料庫的可用性提高到最大化。

Availablity Group包含SQL Server執行個體的本機可用副本,群組中只能有一個主要複本,每個可用性群組支援1個主要複本和4個次要副本,

主要資料庫是主要提供使用者讀寫存取作業。

這次練習你將學到使用Availability Group精靈執行相關設定、啟動SQLONE為主要資料庫...等。

 

開啟SSMS連接三個執行個體

image

 

展開 AlwaysOn High Availability 會出現以下錯誤訊息

image

因為沒有啟用AlwaysOn Availability Groups。

 

針對三台伺服器啟用AlwaysOn Availability Groups。

image

記得重新啟動 SQL Server Service,否則相關變更不會套用。

 

新增可用性群組

image

 

輸入可用性群組名稱

image

 

下一步你會發現無法選擇資料庫,

因為Availability Group中的資料庫必須滿足以下條件

1.需為使用者資料庫

2.資料庫需可讀和寫

3.資料庫不行為單一使用者模式

4.資料庫不可設定自動關閉(Auto_Close)

5.資料庫需使用完整復原模式

6.至少有一個完整備份

7.位於建立可用性群組的 SQL Server 執行個體上,且伺服器執行個體能夠存取它。

8.資料庫不能存在其他可用性群組中

9.不可設定資料庫鏡像(DB Mirroring)

 

執行以下陳述式更改復原模式並執行完整備份

image

 

重新整理即可選擇符合條件的資料庫

image

 

設定可用性副本

image

設定SQLTWO 可讀取的副本=Yes、SQLSIX=唯讀連接存取。

 

透過可用性副本可以改善次要硬體資源,並降低成本同時提高IT效率,對於主要複本的效能會有明顯的改善。

 

查看端點資訊

image

 

 

建立完成

image

這次練習並未設定Listener所以有警告是正常的,

下面的練習將來設定Listener。

 

Exercise 3: Configuring AlwaysOnGroup Listener

本次練習你將了解如何設定AlwaysON Availability Group Listener

 

新增監聽器

 

image

 

輸入監聽器名稱和監聽Port

image

子網路請依環境選擇。

 

開啟 cmd 使用ping 功能,確認可以正常回應

image

回應正常(其他伺服器也需確認是否回應正常)。

 

Exercise 4: Manual Failover of the Availability Group

本次練習你將了解如何手動操作容錯移轉精靈執行容錯移轉工作,

稍後也會手動使用TSQL陳述式操作容錯移轉。

 

選擇show dashboard(顯示儀錶板)

image

 

確認可用性群組狀態

image

 

查看群組中所有資料庫同步狀態、容錯移轉資料遺失狀態

image

 

接下來手動操作容錯移轉

image

點選 start failover wizard。

 

勾選SQLTWO

image

 

選擇連接驗證方法和帳戶

image

 

執行成功

image

 

開啟儀錶板再次確認可用性群組狀態

image

可以看到主要執行個體從原本的SQLONE轉移到SQLTWO了。

 

Exercise 5: Read-Write Application Failover

這次練習你將學到在可用性群組中如何設定讀-寫應用程式重新連接到新的主要資料庫

 

設定OLTP應用程式連接來源(透過監聽器達到重新連接)

image

開啟C:\alwayson\config.xml並修改datasource,這裡輸入監聽器名稱Awlablsn,

 

執行OLTP測試應用程式負載

image

一開始是連接SQLTWO。

 

現在我們手動執行容錯移轉看看OLTP應用程式是否可以透過監聽器導向SQLONE

image

執行容錯移轉。

 

可以看到連接的執行個體由SQLTWO轉為SQLONE

image

執行容錯移轉過程中,OLAP會一直自動嘗試重新連接可用的節點。

 

 

Exercise 6: Active Secondary and Read-Only Application Failover

企業經常抱怨高用可性加災難復原的硬體需求成本過高,

但AlwaysOn Availability Groups提供管理者設定次要副本來提供讀取存取,

這可以改善效能和成本,同時提供應用程式另一個基礎架構功能。

練習結束後你將了解次要副本的設定以及對應的應用程式行為、設定應用程式為唯讀應用程式、設定伺服器上只讀取的應用程式自動連接導向的路徑。

 

執行OLAP

image

一開始是連接SQLONE(主要資料庫)。

 

更改data source=SQLTWO並點選Change

image

可以看到OLTP改連接SQLTWO執行個體。

 

上面沒有出現錯誤是因為先前我們已經設定SQLTWO為可讀取的副本。

image

 

如果readable secondary設定No,就會出現無法連線的錯誤

image

 

連接成功後即可再次測試負載直到完成為止,然後查看最後結果。

 

 

 

SQL Server 2012 可用性群組提供豐富的設定選項,而且整體高可用性的設定一點都不複雜,

管理方面可以透過強大的SSMS和PS工具,因為支援多個資料庫為容錯移轉的單位,

更能減少多個資料庫的停機時間,大大提高前端應用程式的可用性,

真是一項相當棒的高可用性技術。

 

 

參考

AlwaysOn 可用性群組 (SQL Server)

AlwaysOn 可用性群組的必要條件、限制和建議 (SQL Server)