2012年4月5日 星期四

SQL Server 2012 新功能 - AlwaysOn安裝與設定

        在之前的文章 [SQL Server 2012 - AlwaysOn 安裝與設定教學] 已有介紹過SQL Server 2012 - AlwaysOn安裝的功能,但是當時是使用 CTP3的版本進行安裝,所以本篇再透過 RTM 的版本再次介紹如何進行 AlwaysOn 的安裝介紹。

今天要來介紹的是SQL Server 2012 Denali的新功能 AlwaysOn 的安裝與設定,相信有在注意我的部落格的人,應該都有耳聞這個功能,或是大家可以參考下列的連結再重新認識一下AlwaysOn,並實際學習如何將這個功能進行設定。

1、功能說明

1-1 AlwaysOn的新特點:

1-2 AlwaysOn的架構:



補充說明文章:
SQL Server 2012 (Code Name Denali) - HA 新功能 - AlwaysOn

作業系統版本:Windows 2008 R2 SP1
資料庫版本:SQL Server 2012 Enterprise (RTM) - 11.00.2100.60

2、安裝與設定 AlwaysOn

2-1 設定Cluster
而安裝的方式上 AlwaysOn 的節點必須架構在 Cluster之上,所以必須先設定好Cluster,設定方式請大家參考我的下列兩篇文章進行設定,雖然 AlwaysOn 是架構在 Cluster,但他跟以往的安裝略有不同,所以在安裝時,請注意下列幾點事項。
注意事項:
  • AlwaysOn 的2個節點上資料庫安裝不是在叢集磁碟上,而是在本機磁碟上。
  • AlwaysOn 不需依靠在 MSDTC 的服務上。
  • 安裝節點上的資料庫系統時,需選擇 [新增SQL Server 獨立安裝或將功能加入至現有安裝]
  • 請先安裝在第一台之後U=,然後再安裝在第二台。
  • 關於SQL Server 2012的安裝方式,請參考我的另一篇作品。
    SQL Server 2012 RTM 預覽與介紹


2-2 安裝完成後,分別到兩台電腦上啟用 AlwaysOn 的功能,路徑為 [SQL Server 組態管理員] -> [SQL Server] -> [內容] -> [AlwayOn High Avaliability] ,你會看到 [啟用 AlwaysOn 可用性群組] 勾選之後,點選確定即可。
2-3 啟動 SQL Server Management Studio ,連線到資料庫後,點選 [管理] -> [可用性群組] -> [新增可用性群組精靈]。

2-4 當你啟用 [新增可用性群組精靈] 如果得到下列的錯誤訊息時,代表你在第2-2的步驟沒有啟用成功,請再次確認即可。

PS:The HADR service must be enabled for server instance 'Server-Name' before you can create an availability group on this instance. To enable the HADR service, open the SQL Server Configuration Manager, select SQL Server Services, right-click on the SQL Server instance name, select Properties, and use the SQL HADR tab of the Server Properties dialog. Enabling the HADR service requires that the SQL (Microsoft.SqlServer.Managmement.HadrTasks)


2-5 輸入 Availability Group Name

2-6 選擇要加入 HADR 的架構中的資料庫,請注意在節點啟用HADR後,不像Cluster是以節點為主,而是以單一的資料庫為主,所以啟用後,必須手動的將你想要的資料庫逐一加入,而加入的資料庫必須符合下列的需求。
  • 資料庫的復原模式必須選擇 [Full]。
  • 在將資料庫加入Availability Group之前必須先進行完整備份
參考說明:

2-7 先切換到 [複本] 的頁次,點選 [加入複本],將第二台也加入。

2-8 切換到 [端點] 的頁次,確認目前的端點設定,這個部份可以保持預設即可。

2-9 切換到 [備份喜好設定] 的頁次,預設值是50%,你可以依照實際情況或設備的不同,藉以調整優先權,這個部份也可以保持預設值即可。

2-10 設定可用性群組的接聽程式,使用預設值即可(也就是選擇不要建立)。

2-11 設定主機上的分享目錄,請確認此目錄第二台也可以連線的到。

2-12 驗證兩台之間設定值,這個部份請注意系統會檢查第一台資料庫的安裝路徑必須在第二台電腦上也有相同的目錄,否則會驗證失敗。

2-13 最後的設定總結,再點選完成即可。


2-14 設定完成後,開啟 [容錯移轉叢集管理員] -> [服務與應用程式]你就可以看到剛剛新增的 可用性群組已上線成功。


3、測試 AlwaysOn 的功能

3-1 連線到第一台之後,試著新增一個資料表與資料。

新增表格語法:
BEGIN TRANSACTION
GO
CREATE TABLE dbo.test_table_2
(
sn int NOT NULL,
name varchar(40) NULL
) ON [PRIMARY]
GO

ALTER TABLE dbo.test_table_2 ADD CONSTRAINT
PK_Table_1 PRIMARY KEY CLUSTERED
(
sn
) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

COMMIT



3-2 連線到第二台之後,點選 [管理] -> [可用性群組] -> [剛剛自訂的可用性群組名稱] -> [可用性複本] -> [第二台名稱] -> [容錯轉移]。



3-3 選擇要切換的主要複本,此時如果有看到警告訊息時,此部份請先安裝下列的 hotfix 進行更新(每一個複本都要),就不會有這個問題。

針對下列的語法,可以查出目前每個節點的 quorum votes,在 Windows 2008 or Windows 2008 R2的環境上查詢的結果為 null,更新 hitfix 之後,即會傳回正常的值,而下圖的警告訊息也會消失。

SELECT member_name, member_type_desc, member_state_desc, number_of_quorum_votes FROM sys.dm_hadr_cluster_members; 



參考連結: A hotfix is available to let you configure a cluster node that does not have quorum votes in Windows Server 2008 and in Windows Server 2008 R2 http://support.microsoft.com/kb/2494036/en-us View Cluster Quorum NodeWeight Settings http://msdn.microsoft.com/en-us/library/hh270279(v=sql.110).aspx WSFC Quorum Modes and Voting Configuration (SQL Server) http://msdn.microsoft.com/en-us/library/hh270280(v=sql.110).aspx sys.dm_hadr_cluster_members (Transact-SQL) http://msdn.microsoft.com/en-us/library/hh231519(v=sql.110).aspx


3-4 點選 [連接],進行複本連線的確認。

3-5 容錯移轉資訊確認。

3-6 你以透過可用性複本確認,轉換成功後,你就可以看到兩台電腦的 [主要] 與 [次要] 的身候就會互換。

3-7 如果你要觀察目前 AlwaysOn 的健康狀況,在 RTM 的版本中已有加入儀表版的功能,你可以透過此功能即時的得知AlwaysOn的狀態。



參考網址:
Monitoring of Availability Groups (SQL Server) http://msdn.microsoft.com/en-us/library/ff877954.aspx
Use the AlwaysOn Dashboard (SQL Server Management Studio)
http://msdn.microsoft.com/en-us/library/hh213474.aspx


其他相關網址:

  1. SQL Server 2012 Code Name(Denali) 新功能介紹與預覽
  2. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – 分頁功能
  3. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – Sequence
  4. SQL Server 2012(Code Name Denali) - 新T-SQL語法介紹 – Code Snippet Manager
  5. SQL Server 2012(Code Name Denali) - 以列為主的新儲存方式(雲端儲存架構)
  6. SQL Server 2012(Code Name Denali) - FileTable介紹
  7. 微軟介紹雲端平台就緒的資訊 - TechEd 2011
  8. SQL Server 2012 (Code Name Denali) - HA 新功能 - AlwaysOn
  9. SQL Server 2012 (Code Name Denali) - AlwaysOn 安裝與設定教學
  10. SQL Server 2012 新功能 - AlwayOn安裝與設定



關鍵字:SQL ServerDenaliAlwaysOnHA、SQL Server 2012

16 則留言:

  1. 大師請問一下沒有 storege 只有三台主機
    AD Server

    SQl1, SQL2 是否可以做成 Always on ?

    回覆刪除
    回覆
    1. 這樣沒有仲裁機制,不會自動移轉哦

      刪除
    2. 基本上你還是可以作成Alwayson,你可以在仲載設定時,設定成 [節點與檔案共用多數] 然將把AD Server當成共用目錄即可,還是可以Auto Failover的。

      刪除
  2. 您好:
    依照您的步驟可順利完成切換,但看到您回覆alex的留言,
    是否表示這樣的架構在主要SQL Server無預警當機時,
    將無法切換呢??

    回覆刪除
    回覆
    1. 環境上我已測試過,還是可以自動切換的。

      刪除
  3. 請問,3台SQL架在同一個cluster環境中,其中第1、2台SQL是否可以分別對第3台SQL做不同DB的always on設定。

    回覆刪除
    回覆
    1. 你竟然已有對資料庫進行Cluster,不知為何你還需要對資料庫再進行Alwayson,不太建議這樣的架構,可否提出你的需求一起討論,謝謝。

      刪除
  4. 作者已經移除這則留言。

    回覆刪除
  5. 請問一下,我照您的步驟做完後,node1 power off 時,可以正常切換至node2,再把node1 power on,此時node2變主要,node1變次要,這時再把node2 power off,但是卻無法切回node1,連到node1查,發現連cluster都連不到,要等到node2 power on才能正常存取cluster,但是在sql server上手動failover是都正常切換的,我重裝了2~3次都一樣,可否請解惑一下,謝謝。(PS.cluster的錯誤訊息好像是跟仲裁有關,但為何node1 可以切 node2但反之不行,而手動又正常,實在是搞不清楚Orz)

    回覆刪除
    回覆
    1. 找到問題點了,因是windows server2012的cluster有bug需要做
      windows update後cluster才能正常,附上連結來給各位參考
      http://support.microsoft.com/kb/2838669/zh-tw

      刪除
    2. 謝謝你的分享,感謝。

      刪除
  6. 請問如果我台北要架設2台SQL+1 Storage, 高雄2台SQL+1 Storage
    (架設台北是 SQL1 , SQL2 , 高雄 SQL3, SQL4)

    這樣的話我要兩地支援 Auto Failover 的話 (高雄只做備份不online讀取)
    台北 SQL1 與 SQL2 做 Cluster (可同時online讀取) ,
    然後 台北 SQL1 or SQL2 與 高雄 SQL3 , SQL4 做 AlwaysOn
    當 online 的 SQL1 or SQL2 其中一台掛了
    會自動 Failover 到 SQL3 or SQL4
    這樣做 auto failover 架構是正確的嗎?
    還是要讓 SQL 1 , SQL2 做 Mirror (AA mode) ?
    謝謝了

    回覆刪除
    回覆
    1. 在考慮HA的模式下,你的想法的確是正確的,也有滿多的銀行是使用這樣的方式,在Windows 2008R2 + SQL 2012(含)以後,你可以參考下列的網址進行,提供給你參考。

      SQL Server Multi-Subnet Clustering (SQL Server)
      http://technet.microsoft.com/en-us/library/ff878716.aspx

      刪除
  7. 在做AlwaysOn的時候記得防火牆要開1433及5022這兩個PORT噢,如果有動到原本的設定,請依照設定修改 : )

    回覆刪除
  8. 請問alwayson的機器在log file過大的處理方式和單機是否相同,切簡單再切回完整的方式,需要停機嗎?謝謝?

    回覆刪除
  9. 請問這篇文章中有提到AlwaysOn節點必須要架構在Windows Cluster上,若環境無storage,只有local disk這樣可以架Windows Cluster嗎?若可,麻煩分享一下如何設定,謝謝~

    回覆刪除