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