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

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

Always on簡介web

AlwaysOn 可用性組 (SQL Server)sql

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

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

Always on 優勢服務器

AlwaysOn 可用性組提供了一組豐富的選項來提升數據庫的可用性並改進資源使用狀況。主要組件以下:網絡

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

支持替代可用性模式:ide

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

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

支持幾種形式的可用性組故障轉移:自動故障轉移、計劃的手動故障轉移(一般簡稱爲「手動故障轉移」)和強制的手動故障轉移(一般簡稱爲「強制故障轉移」)。

· 支持幾種形式的可用性組故障轉移:自動故障轉移、計劃的手動故障轉移(一般簡稱爲「手動故障轉移」)和強制的手動故障轉移(一般簡稱爲「強制故障轉移」)。有關詳細信息,請參閱故障轉移和故障轉移模式(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


完成以上操做後點連接。若是能夠鏈接到只讀節點,而且符合只讀路由表的順序表示配置完成。

相關文章
相關標籤/搜索