Windows 2012 always on 读写分离集群搭建配置
Windows 2012 always?on 讀寫分離集群搭建配置。
Always?on簡介
AlwaysOn 可用性組 (SQL Server)
AlwaysOn 可用性組功能是一個提供替代數(shù)據(jù)庫鏡像的企業(yè)級方案的高可用性和災(zāi)難恢復(fù)解決方案。SQL Server 2012 中引入了 AlwaysOn 可用性組功能,此功能可最大程度地提高一組用戶數(shù)據(jù)庫對企業(yè)的可用性。“可用性組”針對一組離散的用戶數(shù)據(jù)庫(稱為“可用性數(shù)據(jù)庫”,它們共同實現(xiàn)故障轉(zhuǎn)移)支持故障轉(zhuǎn)移環(huán)境。一個可用性組支持一組讀寫主數(shù)據(jù)庫以及一至八組對應(yīng)的輔助數(shù)據(jù)庫。(可選)可使輔助數(shù)據(jù)庫能進行只讀訪問和/或某些備份操作。
可用性組在可用性副本級別進行故障轉(zhuǎn)移。故障轉(zhuǎn)移不是由諸如因數(shù)據(jù)文件丟失而使數(shù)據(jù)庫成為可疑數(shù)據(jù)庫、刪除數(shù)據(jù)庫或事務(wù)日志損壞等此類數(shù)據(jù)庫問題導(dǎo)致的。
Always?on 優(yōu)點:
AlwaysOn 可用性組提供了一組豐富的選項來提高數(shù)據(jù)庫的可用性并改進資源使用情況。主要組件如下:
·?支持最多九個可用性副本。“可用性副本”是可用性組的實例化,此可用性組由特定的 SQL Server 實例承載,該實例維護屬于此可用性組的每個可用性數(shù)據(jù)庫的本地副本。每個可用性組都支持一個主副本和最多八個輔助副本
支持替代可用性模式:
·?異步提交模式。此可用性模式是一種災(zāi)難恢復(fù)解決方案,適合于可用性副本的分布距離較遠的情況。
·?同步提交模式。此可用性模式相對于性能而言更強調(diào)高可用性和數(shù)據(jù)保護,為此付出的代價是事務(wù)延遲時間增加。一個給定的可用性組可支持最多三個同步提交可用性副本(包括當(dāng)前主副本)。
支持幾種形式的可用性組故障轉(zhuǎn)移:自動故障轉(zhuǎn)移、計劃的手動故障轉(zhuǎn)移(通常簡稱為“手動故障轉(zhuǎn)移”)和強制的手動故障轉(zhuǎn)移(通常簡稱為“強制故障轉(zhuǎn)移”)。
·?支持幾種形式的可用性組故障轉(zhuǎn)移:自動故障轉(zhuǎn)移、計劃的手動故障轉(zhuǎn)移(通常簡稱為“手動故障轉(zhuǎn)移”)和強制的手動故障轉(zhuǎn)移(通常簡稱為“強制故障轉(zhuǎn)移”)。有關(guān)詳細信息,請參閱故障轉(zhuǎn)移和故障轉(zhuǎn)移模式(AlwaysOn 可用性組)。
·?使您能夠?qū)⒔o定的可用性副本配置為支持以下一種或兩種活動輔助功能:
o?利用只讀連接訪問,與副本的只讀連接可以在此副本作為輔助副本運行時訪問和讀取其數(shù)據(jù)庫。有關(guān)詳細信息,請參閱活動輔助副本:可讀輔助副本(AlwaysOn 可用性組)。
o?當(dāng)副本作為輔助副本運行時,對副本的數(shù)據(jù)庫執(zhí)行備份操作。有關(guān)詳細信息,請參閱活動輔助副本:輔助副本備份(AlwaysOn 可用性組)。
通過使用活動輔助功能,可更好地利用輔助硬件資源,從而提高 IT 效率并降低成本。此外,通過將讀意向應(yīng)用程序和備份作業(yè)轉(zhuǎn)移到輔助副本,有助于提高針對主副本的性能。
·?支持每個可用性組的可用性組偵聽器。“可用性組偵聽器”是一個服務(wù)器名稱,客戶端可連接到此服務(wù)器以訪問 AlwaysOn 可用性組的主副本或輔助副本中的數(shù)據(jù)庫。可用性組偵聽器將傳入連接定向到主副本或只讀輔助副本。偵聽器在可用性組故障轉(zhuǎn)移后提供快速應(yīng)用程序故障轉(zhuǎn)移。有關(guān)詳細信息,請參閱可用性組偵聽器、客戶端連接和應(yīng)用程序故障轉(zhuǎn)移 (SQL Server)。
·?支持靈活的故障轉(zhuǎn)移策略以便更好地控制可用性組故障轉(zhuǎn)移。
·?支持用于避免頁損壞的自動頁修復(fù)。
·?支持加密和壓縮,這提供了安全且高性能的傳輸方式。
·?提供了一組集成的工具來簡化部署和管理可用性組,這些工具包括:
o?用于創(chuàng)建和管理可用性組的 Transact-SQL DDL 語句。有關(guān)詳細信息,請參閱AlwaysOn 可用性組的 Transact-SQL 語句概述 (SQL Server)。
o?SQL Server Management Studio 工具,如下所示:
§?新建可用性組向?qū)?/span> 創(chuàng)建和配置可用性組。在某些環(huán)境中,此向?qū)н€可以自動準備輔助數(shù)據(jù)庫并且為每個數(shù)據(jù)庫啟動數(shù)據(jù)同步。有關(guān)詳細信息,請參閱使用“新建可用性組”對話框 (SQL Server Management Studio)。
§?將數(shù)據(jù)庫添加到可用性組向?qū)?/span> 向現(xiàn)有可用性組添加一個或多個主數(shù)據(jù)庫。在某些環(huán)境中,此向?qū)н€可以自動準備輔助數(shù)據(jù)庫并且為每個數(shù)據(jù)庫啟動數(shù)據(jù)同步。有關(guān)詳細信息,請參閱使用“將數(shù)據(jù)庫添加到可用性組”向?qū)?(SQL Server)。
§?將副本添加到可用性組向?qū)?/span> 向現(xiàn)有可用性組添加一個或多個輔助副本。在某些環(huán)境中,此向?qū)н€可以自動準備輔助數(shù)據(jù)庫并且為每個數(shù)據(jù)庫啟動數(shù)據(jù)同步。有關(guān)詳細信息,請參閱使用“將副本添加到可用性組向?qū)А?SQL Server Management Studio)。
§?故障轉(zhuǎn)移可用性組向?qū)?/span> 啟動對可用性組的手動故障轉(zhuǎn)移。根據(jù)您指定為故障轉(zhuǎn)移目標(biāo)的輔助副本的配置和狀態(tài),該向?qū)Э梢灾付ㄓ媱澋氖謩庸收限D(zhuǎn)移或強制手動故障轉(zhuǎn)移。有關(guān)詳細信息,請參閱使用故障轉(zhuǎn)移可用性組向?qū)?/span> (SQL Server Management Studio)。
o?AlwaysOn 面板 監(jiān)視 AlwaysOn 可用性組、可用性副本和可用性數(shù)據(jù)庫,并且評估 AlwaysOn 策略的結(jié)果。有關(guān)詳細信息,請參閱使用 AlwaysOn 面板 (SQL Server Management Studio)。
o?“對象資源管理器詳細信息”窗格顯示有關(guān)現(xiàn)有可用性組的基本信息。關(guān)詳細信息,請參閱使用對象資源管理器詳細信息監(jiān)視可用性(SQLServer Management Studio)。
o?PowerShell cmdlet。有關(guān)詳細信息,請參閱AlwaysOn 可用性組PowerShell Cmdlet 概述 (SQL Server)。
文檔出處,詳見:https://msdn.microsoft.com/zhcn/library/hh510230(v=sql.120).aspx
?
測試環(huán)境:
4臺Windows 2012 R2 服務(wù)器。
服務(wù)器功能 | 服務(wù)器IP | 系統(tǒng) | 服務(wù) |
AD節(jié)點 | 10.92.37.2 | Windows?2012 R2 | AD |
Sql?2012節(jié)點 | 10.92.37.3 | Windows?2012 R2 | 故障轉(zhuǎn)移+sql2012 |
Sql?2012節(jié)點 | 10.92.37.4 | Windows?2012 R2 | 故障轉(zhuǎn)移+sql2012 |
Sql?2012節(jié)點 | 10.92.37.5 | Windows?2012 R2 | 故障轉(zhuǎn)移+sql2012 |
一、安裝故障轉(zhuǎn)移
Always on 集群需要故障轉(zhuǎn)移集群支持。首先需要搭建故障轉(zhuǎn)移集群。
在10.92.37.2安裝域控。打開服務(wù)器管理器,打開-管理-添加角色和功能。
?
勾選Active?Directory 域服務(wù)。
等待所有安裝完成。
?
?
配置域控服務(wù)器。,點擊下圖是所示按鈕。
選擇“添加新林”,在根域名填入您域的名稱。
?
輸入還原密碼。
下一步
等待系統(tǒng)分配NetBIOS名稱。然后一直下一步。等待完成,重啟服務(wù)器。重啟完成注意需要用域賬號登陸。例如jianjian\administrator
安裝
?
注:域控配置好之后會自動把網(wǎng)卡dns改成127.0.0.1,或者您安裝域控前手動改成127.0.0.1,sql節(jié)點的dns為了加入域需要改成域控的地址:10.92.37.2
二、Sql 節(jié)點服務(wù)器加入域。
配置sql節(jié)點服務(wù)器的網(wǎng)卡(和域控在同段)DNS為域控的地址。確保可以解析域控名稱。
開始我的電腦右鍵屬性à更改設(shè)置à更改à選擇域,填入域控名稱。確定,輸入域控的管理員賬號和密碼加入域。重啟服務(wù)器。
重啟后通過域用戶登陸服務(wù)器。例如:jianjian\administrator
三、安裝故障轉(zhuǎn)移角色。
在sql節(jié)點的所有服務(wù)器安裝故障轉(zhuǎn)移角色服務(wù)。
安裝方式都一樣,下一步即可。
故障轉(zhuǎn)移磁盤配置。完整的故障轉(zhuǎn)移集群需要仲裁磁盤和數(shù)據(jù)盤、MSDTC盤。在發(fā)生轉(zhuǎn)移的時候磁盤也會整體進行轉(zhuǎn)移從而起到2邊數(shù)據(jù)同步的作用。具體可以參考相關(guān)文檔。
此次我們?yōu)?/span>3節(jié)點(奇數(shù))集群,并不需要創(chuàng)建仲裁。
四、建立故障轉(zhuǎn)移集群。
下一步
下一步
下一步
?
角色不選,直接下一步
?
?
選擇功能—故障轉(zhuǎn)移集群。
?
下一步直接到安裝結(jié)束。
?
瀏覽查找您需要添加到集群的節(jié)點,為了更好辨認建議更改計算機名稱。
?
下一步?
?
下一步
?
下一步
?
下一步
??
下一步
五、安裝sql 2012。
Sql2012在安裝正常操作即可,需要注意的就是服務(wù)賬號配置的(如圖1)時候使用域賬號。分別在3臺節(jié)點安裝sql 2012。安裝完成后,(圖2所示)打開sql server ?配置管理器—SQL Server(MSSQLSERVER)--右鍵屬性。啟用always on 可用性組。重啟數(shù)據(jù)庫服務(wù)。
圖(1)
圖(2)
?
六、配置讀寫集群。
首先在你選擇的主節(jié)點導(dǎo)入您的數(shù)據(jù)庫。讀寫集群配置需要數(shù)據(jù)庫的完整備份。選擇數(shù)據(jù)庫,右鍵屬性—選項—調(diào)整恢復(fù)類型為完整。
?
對這個數(shù)據(jù)做完整備份。
?
always on 集群配置。
?
?
輸入名稱。隨性即可。
?
點擊添加副本使用域賬號連接其他2個sql節(jié)點。勾選(自動故障轉(zhuǎn)移)和(同步提交)
輔助副本“可讀輔助副本”選擇為僅只讀意向。備份首選項默認即可。
?
?
添加偵聽器。也可以在創(chuàng)建完后再添加。選擇子網(wǎng),輸入指定的IP地址即可。注意監(jiān)聽的端口sql server為1433
?
?
“所有副本可訪問的共享網(wǎng)絡(luò)位置。”在任意節(jié)點建立共享文件夾,并且在另外2臺掛載(注意開機掛載)。即可。
?
??驗證結(jié)果全部成功即可。下一步等待創(chuàng)建完成即可。完成后結(jié)果如下。在主節(jié)點可以看到“主要”字樣。此時可以做到3臺服務(wù)器數(shù)據(jù)同步(同步有1-2s延遲)并且可以實現(xiàn)故障轉(zhuǎn)移。當(dāng)主節(jié)點故障后其他節(jié)點可以自動成為主節(jié)點接替工作。
??
此時數(shù)據(jù)庫集群還無法做到讀寫分離。由于always on局限性需要手動配置只讀路由表,這個路由表大致結(jié)構(gòu)是主節(jié)點----對應(yīng)2個只讀節(jié)點。并且只讀節(jié)點有優(yōu)先級,前面的優(yōu)于后面的。 無法實現(xiàn)2個或者多個只讀節(jié)點實現(xiàn)負載。其實只為熱備。只讀路由表通過T-sql語言實現(xiàn),具體如下。更改相關(guān)參數(shù)保存為.sql文件,通過sqlcmd命令執(zhí)行。Sqlcmd –S 服務(wù)器名稱??-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?此類參數(shù)。測試方式如下。
??
完成以上操作后點鏈接。如果可以連接到只讀節(jié)點,并且符合只讀路由表的順序表示配置完成。
轉(zhuǎn)載于:https://blog.51cto.com/zhanx/1971570
總結(jié)
以上是生活随笔為你收集整理的Windows 2012 always on 读写分离集群搭建配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows 中 vpn连接提示,
- 下一篇: Qt编写数据可视化大屏界面电子看板系统