Windows 2012 always on 讀寫分離集羣搭建配置

Windows 2012 always on 讀寫分離集羣搭建配置。

Always on簡介

AlwaysOn 可用性組 (SQL Server)

AlwaysOn 可用性組功能是一個提供替代數據庫鏡像的企業級方案的高可用性和災難恢復解決方案。SQL Server 2012 中引入了 AlwaysOn 可用性組功能,此功能可最大程度地提高一組用戶數據庫對企業的可用性。“可用性組”針對一組離散的用戶數據庫(稱爲“可用性數據庫”,它們共同實現故障轉移)支持故障轉移環境。一個可用性組支持一組讀寫主數據庫以及一至八組對應的輔助數據庫。(可選)可使輔助數據庫能進行只讀訪問和/或某些備份操作。

可用性組在可用性副本級別進行故障轉移。故障轉移不是由諸如因數據文件丟失而使數據庫成爲可疑數據庫、刪除數據庫或事務日誌損壞等此類數據庫問題導致的。

Always on 優點

AlwaysOn 可用性組提供了一組豐富的選項來提高數據庫的可用性並改進資源使用情況。主要組件如下:

· 支持最多九個可用性副本。“可用性副本”是可用性組的實例化,此可用性組由特定的 SQL Server 實例承載,該實例維護屬於此可用性組的每個可用性數據庫的本地副本。每個可用性組都支持一個主副本和最多八個輔助副本

支持替代可用性模式:

· 異步提交模式。此可用性模式是一種災難恢復解決方案,適合於可用性副本的分佈距離較遠的情況。

· 同步提交模式。此可用性模式相對於性能而言更強調高可用性和數據保護,爲此付出的代價是事務延遲時間增加。一個給定的可用性組可支持最多三個同步提交可用性副本(包括當前主副本)。

支持幾種形式的可用性組故障轉移:自動故障轉移、計劃的手動故障轉移(通常簡稱爲“手動故障轉移”)和強制的手動故障轉移(通常簡稱爲“強制故障轉移”)。

· 支持幾種形式的可用性組故障轉移:自動故障轉移、計劃的手動故障轉移(通常簡稱爲“手動故障轉移”)和強制的手動故障轉移(通常簡稱爲“強制故障轉移”)。有關詳細信息,請參閱故障轉移和故障轉移模式(AlwaysOn 可用性組)

· 使您能夠將給定的可用性副本配置爲支持以下一種或兩種活動輔助功能:

利用只讀連接訪問,與副本的只讀連接可以在此副本作爲輔助副本運行時訪問和讀取其數據庫。有關詳細信息,請參閱活動輔助副本:可讀輔助副本(AlwaysOn 可用性組)

當副本作爲輔助副本運行時,對副本的數據庫執行備份操作。有關詳細信息,請參閱活動輔助副本:輔助副本備份(AlwaysOn 可用性組)

通過使用活動輔助功能,可更好地利用輔助硬件資源,從而提高 IT 效率並降低成本。此外,通過將讀意向應用程序和備份作業轉移到輔助副本,有助於提高針對主副本的性能。

· 支持每個可用性組的可用性組偵聽器。“可用性組偵聽器”是一個服務器名稱,客戶端可連接到此服務器以訪問 AlwaysOn 可用性組的主副本或輔助副本中的數據庫。可用性組偵聽器將傳入連接定向到主副本或只讀輔助副本。偵聽器在可用性組故障轉移後提供快速應用程序故障轉移。有關詳細信息,請參閱可用性組偵聽器、客戶端連接和應用程序故障轉移 (SQL Server)

· 支持靈活的故障轉移策略以便更好地控制可用性組故障轉移。

· 支持用於避免頁損壞的自動頁修復。

· 支持加密和壓縮,這提供了安全且高性能的傳輸方式。

· 提供了一組集成的工具來簡化部署和管理可用性組,這些工具包括:

用於創建和管理可用性組的 Transact-SQL DDL 語句。有關詳細信息,請參閱AlwaysOn 可用性組的 Transact-SQL 語句概述 (SQL Server)

SQL Server Management Studio 工具,如下所示:

§ 新建可用性組嚮導 創建和配置可用性組。在某些環境中,此嚮導還可以自動準備輔助數據庫並且爲每個數據庫啓動數據同步。有關詳細信息,請參閱使用“新建可用性組”對話框 (SQL Server Management Studio)

§ 將數據庫添加到可用性組嚮導 向現有可用性組添加一個或多個主數據庫。在某些環境中,此嚮導還可以自動準備輔助數據庫並且爲每個數據庫啓動數據同步。有關詳細信息,請參閱使用“將數據庫添加到可用性組”嚮導 (SQL Server)

§ 將副本添加到可用性組嚮導 向現有可用性組添加一個或多個輔助副本。在某些環境中,此嚮導還可以自動準備輔助數據庫並且爲每個數據庫啓動數據同步。有關詳細信息,請參閱使用“將副本添加到可用性組嚮導”(SQL Server Management Studio)

§ 故障轉移可用性組嚮導 啓動對可用性組的手動故障轉移。根據您指定爲故障轉移目標的輔助副本的配置和狀態,該向導可以指定計劃的手動故障轉移或強制手動故障轉移。有關詳細信息,請參閱使用故障轉移可用性組嚮導 (SQL Server Management Studio)

AlwaysOn 面板 監視 AlwaysOn 可用性組、可用性副本和可用性數據庫,並且評估 AlwaysOn 策略的結果。有關詳細信息,請參閱使用 AlwaysOn 面板 (SQL Server Management Studio)

“對象資源管理器詳細信息”窗格顯示有關現有可用性組的基本信息。關詳細信息,請參閱使用對象資源管理器詳細信息監視可用性(SQLServer Management Studio)

PowerShell cmdlet。有關詳細信息,請參閱AlwaysOn 可用性組PowerShell Cmdlet 概述 (SQL Server)

文檔出處,詳見:https://msdn.microsoft.com/zhcn/library/hh510230(v=sql.120).aspx

 

測試環境:

4臺Windows 2012 R2 服務器

服務器功能

服務器IP

系統

服務

AD節點

10.92.37.2

Windows 2012 R2

AD

Sql 2012節點

10.92.37.3

Windows 2012 R2

故障轉移+sql2012

Sql 2012節點

10.92.37.4

Windows 2012 R2

故障轉移+sql2012

Sql 2012節點

10.92.37.5

Windows 2012 R2

故障轉移+sql2012

、安裝故障轉移

Always on 集羣需要故障轉移集羣支持。首先需要搭建故障轉移集羣。

10.92.37.2安裝域。打開服務器管理器,打開-管理-添加角色和功能。

 

wKioL1neQE6hjyZKAAC7FIvNbCw103.png-wh_50

wKiom1neQwWxEljEAACWt5mVqQM632.png-wh_50

wKioL1neQE-ieNTJAAB5mxfuFpI232.png-wh_50

wKioL1neQE_zpKW_AACQCnjk7p8912.png-wh_50


勾選Active Directory 服務

wKioL1neQJXShelRAADIKTmoemE831.png-wh_50

wKioL1neQJWw4CjWAADKrecnOS4550.png-wh_50

wKioL1neQJXSeRsgAADCcB2Coz0944.png-wh_50

wKioL1neQJXh0HkoAACN5snxvN0550.png-wh_50


等待所有安裝完成。

 

 

配置域控服務器。點擊下圖是所示按鈕

wKioL1neQLfSyDSaAAC6fttPW-E169.png-wh_50

選擇“添加新林域名填入名稱。

 wKiom1neQ4XAeboyAABgi7xev1s849.png-wh_50

輸入還原密碼

wKioL1neQOPRa6F7AACTSC8PX-A360.png-wh_50

下一步

wKioL1neQPSwqE-nAABZc4_2soY561.png-wh_50

等待系統分配NetBIOS名稱。然後一直下一步。等待完成重啓服務器。重啓完成注意需要域賬號登陸。例如jianjian\administrator

wKiom1neQ8Cxizg_AABfmvVY_9w788.png-wh_50

安裝

wKioL1neQSrghencAAB9yhQcFJo137.png-wh_50 

配置好之後自動把網卡dns改成127.0.0.1,或者您安裝域控前手動改成127.0.0.1,sql節點的dns爲了加入域需要改成控的地址10.92.37.2

Sql 節點服務器加入域。

配置sql節點服務器的網卡(和域控在同DNS爲域控的地址。確保可以解析域名稱

開始我的電腦右鍵屬性à更改設置à更改à選擇域,填入控名稱。確定,輸入域控的管理員賬號和密碼加入域。重啓服務器

wKioL1neShjD_rZAAAAxiljDwGs954.png-wh_50

wKiom1neTM-zNh0iAAAtxA2mITc260.png-wh_50

wKioL1neShnQXj84AAAi0c3UT9M435.png-wh_50

重啓通過域用戶登陸服務器例如jianjian\administrator

安裝故障轉移角色

sql節點的所有服務器安裝故障轉移角色服務

安裝方式一樣,下一步即可。

故障轉移磁盤配置。完整故障轉移集羣需要仲裁磁盤數據盤MSDTC發生轉移時候磁盤也會整體進行轉移從而起到2邊數據同步的作用。具體可以參考相關文檔。

此次我們爲3節點(奇數集羣並不需要創建仲裁。


建立故障轉移集羣

下一步

wKioL1neSqOS8SxuAADey5WgqJ4296.png-wh_50

下一步

wKioL1neSrCBFbw9AAC9q3e88pU582.png-wh_50

下一步

 wKioL1neSsiS1F8-AADGtE6DYY0153.png-wh_50

角色不選,直接下一步

 wKioL1neSunzdxZZAAEPMrfwoHY446.png-wh_50

 

選擇功能—故障轉移集羣。

 wKioL1neSvyThDPwAAEnBhme2hQ219.png-wh_50

下一步直接安裝結束。

 

wKioL1neSyCDymOrAAC3wvbH3Vk060.png-wh_50

wKiom1neTdagj1LpAACn6OCjLMA748.png-wh_50

wKioL1neSyChJrbhAAF-2bPFcHY391.png-wh_50

wKioL1neSyHxJKyHAAF-2bPFcHY968.png-wh_50

wKioL1neSyGgZQsoAAEeLz6Od4g583.png-wh_50

wKioL1neSy7C4tR8AABPVlTr35U114.png-wh_50


瀏覽查找您需要添加到集羣的節點,爲了更好辨認建議更改計算機名稱。

 wKiom1neThahbm0aAAA3RSig2BA099.png-wh_50

下一步 

 wKioL1neS3SBz9wmAABQb8RtRYI102.png-wh_50

下一步

 wKioL1neS4jC6_zaAABib-HmMis260.png-wh_50

下一步

 

wKioL1neS6bD_g4LAABIUV0Ti7E652.png-wh_50

wKioL1neS7KhHdG7AABZssbcrdU434.png-wh_50

下一步

  

wKioL1neS9eyhS85AABOIFCR3Mo164.png-wh_50

wKioL1neS9fRKk6BAABRre0x0J4183.png-wh_50

下一步

wKioL1neS_fyVv2UAABBvPQi0Ho533.png-wh_50

安裝sql 2012

Sql2012安裝正常操作即可,需要注意的就是服務賬號配置(如圖1)時候使用域賬號。分別在3臺節點安裝sql 2012。安裝完成後,(圖2所示)打開sql server  配置管理器—SQL ServerMSSQLSERVER)--右鍵屬性。啓用always on 可用性組。重啓數據庫服務。

圖(1

wKiom1neTuPA_AbXAAIiSiaVp-s366.png-wh_50

2

wKioL1neTEyiBZklAAA56Es_4_U145.png-wh_50

wKioL1neTEySlKhuAAA3RxdxaJk047.png-wh_50

 

配置讀寫集羣

首先在你選擇節點導入數據庫。讀寫集羣配置需要數據庫的完整備份。選擇數據庫右鍵屬性—選項—調整恢復類型爲完整。

wKioL1neTGfBDhsiAABIoIb35y0758.png-wh_50 

這個數據完整備份。

wKioL1neTHDBTtlBAABY8hmoRHM634.png-wh_50 

always on 集羣配置

 wKiom1neT2Sxdv6GAACDzFmp9yg705.png-wh_50

wKioL1neTKDS2CSkAADXvb0gCF8728.png-wh_50

wKioL1neTKCDfw8bAABHo_aLj1U001.png-wh_50

 

輸入名稱隨性即可。

wKioL1neTMXxYKvTAAB3moU2Zwc945.png-wh_50 

點擊添加副本使用域賬號連接其他2個sql節點。勾選自動故障轉移)(同步提交)

輔助副本“可讀輔助副本”選擇爲僅只讀意向。備份首選項默認即可。

 

wKioL1neTOjTAYbRAACPrSX0Xj0269.png-wh_50

wKioL1neTOjgJY8sAACu5RT0xcA239.png-wh_50

 

添加偵聽器。也可以創建完後再添加。選擇子網,輸入指定IP地址即可注意監聽的端口sql server1433

 

wKioL1neTSCi9fqeAACZh6U1rAM169.png-wh_50

wKioL1neTSCDZcewAACBdkdWCv8848.png-wh_50

wKioL1neTSHxQFKKAACGpi3Ngn8941.png-wh_50

 

“所有副本可訪問的共享網絡位置。任意節點建立共享文件夾,並且另外2臺掛載(注意開機掛載)即可

wKioL1neTTfzg9ZmAACJ2vaZx2Y265.png-wh_50 

  驗證結果全部成功即可。下一步等待創建完成即可完成後結果如下。主節點可以看到“主要”字樣。此時可以做到3臺服務器數據同步同步有1-2s延遲)並且可以實現故障轉移。當主節點故障其他節點可以自動成爲主節點接替工作

  

wKioL1neTVrzrgKTAAChPqyYOdU623.png-wh_50

wKioL1neTVvglT0DAACvWK7QDuE261.png-wh_50


此時數據庫集羣還無法做到讀寫分離由於always on侷限性需要手動配置只讀路由表,這個路由表大致結構是主節點----對應2個只讀節點並且只讀節點有優先級,前面的優於後面的 無法實現2個或者多個只讀節點實現負載。其實只爲熱備只讀路由表通過T-sql語言實現,具體如下。更改相關參數保存爲.sql文件,通過sqlcmd命令執行Sqlcmd –S 服務器名稱  -U 用戶  -P 密碼 –i 腳本  

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-2N0I1AI1BHC' WITH

(

    SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-2N0I1AI1BHC' WITH

(

    SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://10.92.37.3:1433')

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-K0VKE108NM8' WITH

(

    SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-K0VKE108NM8' WITH

(

    SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://10.92.37.6:1433')

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-LF5RK32CE87' WITH

(

    SECONDARY_ROLE (ALLOW_CONNECTIONS = READ_ONLY)

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-LF5RK32CE87' WITH

(

    SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://10.92.37.5:1433')

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-2N0I1AI1BHC' WITH

(

    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(N'WIN-K0VKE108NM8',N'WIN-LF5RK32CE87',N'WIN-2N0I1AI1BHC'))

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-K0VKE108NM8' WITH

(

    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(N'WIN-2N0I1AI1BHC',N'WIN-K0VKE108NM8','WIN-LF5RK32CE87'))

);

GO

ALTER AVAILABILITY GROUP [weitui_sql_wr]

MODIFY REPLICA ON N'WIN-LF5RK32CE87' WITH

(

    PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(N'WIN-K0VKE108NM8',N'WIN-LF5RK32CE87','WIN-2N0I1AI1BHC'))

);

GO

 

 

驗證讀寫路由表。使用同樣的命令驗證。

select a.*,c.is_local,c.role_desc,d.endpoint_url,d.read_only_routing_url

from sys.dm_hadr_availability_replica_cluster_nodes a

join sys.dm_hadr_availability_replica_cluster_states b

on a.replica_server_name = b.replica_server_name

join sys.dm_hadr_availability_replica_states c

on b.replica_id = c.replica_id

join sys.availability_replicas d

on c.replica_id = d.replica_id

 

測試只讀路由是否生效。Always on 集羣web鏈接過程中需要傳遞ApplicationIntent = ReadOnly 此類參數。測試方式如下。

  

wKioL1neTavAAXa_AABOfAh45h8986.png-wh_50

wKiom1neUGLAkfDZAABbn2Dx_gQ016.png-wh_50

wKioL1neTavzwxVMAAA6lDAbPBE084.png-wh_50


完成以上操作後點鏈接。如果可以連接到只讀節點,並且符合只讀路由表的順序表示配置完成。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章