Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 配置搭建詳細教程
最詳細的 SQLSERVER ALWAYSON配置教程
一、準備工作:
1、準備域控:服務(wù)器都在同一個域控(以下假設(shè)所在域控為 AAA.COM)。
2、開啟服務(wù):域控要開啟Remote Procedure Call (RPC)服務(wù)。
3、安裝角色和服務(wù):納入群集節(jié)點的服務(wù)器必須先添加角色和功能 .NET3.5 和 故障轉(zhuǎn)移群集,防火墻開啟兩個共享端口135、445,和端點端口5022,要開啟Remote Registry服務(wù)。
4、建專用域賬號:在域控新建數(shù)據(jù)庫服務(wù)專用賬號 wsfc_sqlserver@AAA.com,密碼:********。
5、配置仲裁共享文件夾:去域控下非數(shù)據(jù)庫節(jié)點服務(wù)器上建立一個共享文件夾(如:\\10.0.XXX.XXX\WIN故障轉(zhuǎn)移群集\共享仲裁盤專用),專門用于仲裁共享文件,授予wsfc_sqlserver@AAA.com所有共享權(quán)限。
6、數(shù)據(jù)庫相關(guān):
6.1、為新建域賬號授權(quán):在各節(jié)點服務(wù)器將此wsfc_sqlserver@AAA.com加入管理員組,并在服務(wù)中將其設(shè)置為 SQLSERVER服務(wù)的登錄身份,并賦予SQLSERVER的sysadmin角色(后邊就用這個賬號登錄SQLSERVER配置AlwaysOn)。
USE master CREATE LOGIN [AAA\wsfc_sqlserver] FROM WINDOWS WITH DEFAULT_DATABASE=[master] ALTER SERVER ROLE [sysadmin] ADD MEMBER [AAA\wsfc_sqlserver] go
6.2、整理節(jié)點服務(wù)器數(shù)據(jù)文件夾:每臺節(jié)點服務(wù)器的數(shù)據(jù)庫都要放到相同的位置,文件夾路徑要全部相同,副本服務(wù)器上要先按照主服務(wù)器建好文件夾。
6.3、設(shè)置節(jié)點服務(wù)器數(shù)據(jù)備份共享文件夾:每臺節(jié)點服務(wù)器建一個專門用于存放數(shù)據(jù)庫備份及同步文件的文件夾,設(shè)置共享,并加上管理員組 的所有共享權(quán)限(在之前wsfc_sqserever@AAA.com已加入管理員組)(注意干掉默認的EveryOne權(quán)限)。
6.4、同步數(shù)據(jù)庫賬號:在同步之前,在輔助副本服務(wù)器數(shù)據(jù)庫上先建立好與主副本數(shù)據(jù)庫一樣的數(shù)據(jù)庫賬號(用EXEC sp_help_revlogin;進行導(dǎo)出導(dǎo)入,確保所有副本上的賬號完全一致(包括SID要一致))。
二、搭建故障轉(zhuǎn)移群集
1、選擇節(jié)點服務(wù)器

2、下一步驗證配置,選“否”。
3、定義群集名稱和虛擬地址。

4、下面就是按你的設(shè)置進入自動配置,配置完成如圖。同時域控中會自動生成一條以群集名稱和IP的主機(A)記錄,和計算機。



5、群集創(chuàng)建完成后,本機會自動生成一個用戶CLIUSR,此用戶是用來啟動和運行群集服務(wù)的,千萬不要動它,否則會導(dǎo)致群集服務(wù)中斷。

6、配置群集仲裁(右鍵創(chuàng)建好的群集 >> 更多操作 >> 配置群集仲裁設(shè)置)



三、搭建數(shù)據(jù)庫AlwaysOn
1、做好第一節(jié)第6點的相關(guān)準備(6、數(shù)據(jù)庫相關(guān))
2、建立SQL別名(32位):在每臺節(jié)點服務(wù)器都加上所有節(jié)點數(shù)據(jù)庫別名(實例名稱+IP+端口 ),確保可以通過別名訪問對應(yīng)數(shù)據(jù)庫。

3、啟用 AlwaysOn(SQLSERVER配置管理器)

4、創(chuàng)建數(shù)據(jù)庫證書(一定要配,否則 AlwaysOn可用性組建好了,但是副本會連接不上(顯示一把紅色的×),)
4.1、在每臺節(jié)點數(shù)據(jù)庫,創(chuàng)建并安裝證書:
USE master; GO --創(chuàng)建主密鑰。 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '******************'; --創(chuàng)建證書。 把CERT_xxx_x1換成自己要的名字。 CREATE CERTIFICATE CERT_xxx_x1 WITH SUBJECT = 'CERT_xxx_x1', START_DATE = '2022-01-01',EXPIRY_DATE = '2099-12-30'; --把剛才創(chuàng)建的證書備份到文件。 把CERT_xxx_x1換成自己要的名字。 BACKUP CERTIFICATE CERT_xxx_x1 TO FILE = 'D:\DataBase\cert\CERT_xxx_x1.cer'; --創(chuàng)建終結(jié)點,設(shè)為證書驗證。 把CERT_xxx_x1換成自己要的名字。 CREATE ENDPOINT [Hadr_endpoint] AUTHORIZATION [sa] STATE=STARTED AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE CERT_xxx_x1, ENCRYPTION = REQUIRED ALGORITHM AES) GO
4.2、在每臺節(jié)點數(shù)據(jù)庫,載入群集內(nèi)其他節(jié)點數(shù)據(jù)庫的證書:
USE master; CREATE CERTIFICATE CERT_xxx_x1 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x1.cer'; CREATE CERTIFICATE CERT_xxx_x2 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x2.cer'; CREATE CERTIFICATE CERT_xxx_x3 FROM FILE = 'd:\DataBase\cert\CERT_xxx_x3.cer';
5、創(chuàng)建AlwaysOn高可用組(數(shù)據(jù)庫 >> Always On高可用性 >> 可用性組 >> 右鍵新建)
5.1、指定主副本&輔助副本

5.2、端點(不用配置,默認即可)

5.3、偵聽器

5.4、只讀路由

只讀路由的使用:
同一個域AAA:可以使用AG23013,8887 或 AG23013.AAA.COM,8887 進行訪問。
不同域BBB:可以在BBB域建立一條記錄指向偵聽器的IP進行訪問。
連接字符串默認訪問主副本,可讀寫。如果要只讀,就在連接字符串中添加 ApplicationIntent=ReadOnly;MultiSubnetFailover=true,指定訪問只讀副本實現(xiàn)讀寫分離。
5.5、設(shè)置數(shù)據(jù)同步方式

5.6、再下一步下一步直到完成就行了,就可以在主副本所在數(shù)據(jù)庫和輔助副本所在數(shù)據(jù)庫分別看到下圖:

5.7、數(shù)據(jù)庫里面的“AlwaysOn高可用組”創(chuàng)建成功后會有如下變化:
5.7.1、在故障轉(zhuǎn)移群集內(nèi)會自動產(chǎn)生一個以“可用性組名”命名的角色,角色內(nèi)已包含偵聽器,如下圖:

5.7.2、域控會根據(jù)“偵聽器名稱”自動產(chǎn)生一條計算機記錄 和一條主機(A)記錄:


四、過程中可能遇到的問題
1、如果要分離數(shù)據(jù)庫,出現(xiàn)錯誤“無法對數(shù)據(jù)庫‘XXX‘執(zhí)行刪除,因為它正用于復(fù)制”
解決:先 sp_removedbreplication'DBNAME';然后再分離。
2、數(shù)據(jù)庫“正在還原”
解決:如果后續(xù)還要將此數(shù)據(jù)庫加入到可用性組,就使用:RESTOREDATABASEDBNAMEWITHNORECOVERY; 反之使用 WITH RECOVERY。
PS:使用WITH RECOVERY后,還要從新添加到可用性組時可能會出現(xiàn)如下錯誤:

解決辦法(右鍵數(shù)據(jù)庫>>所有任務(wù)>>還原>>數(shù)據(jù)庫>>選項菜單>>恢復(fù)狀態(tài)>>選擇”RESTORE WITH NORECOVERY”),操作完成后,再去可用性組里邊的可用性數(shù)據(jù)庫,右鍵>>聯(lián)機:

3、執(zhí)行手動故障轉(zhuǎn)移后,副本數(shù)據(jù)庫可能狀態(tài)為“未同步”,且無法連接。
解決:在“未同步”的數(shù)據(jù)庫執(zhí)行:ALTERDATABASEDBNAMESETHADR RESUME;
4、銷毀群集時,沒有先逐出節(jié)點,直接刪群集,導(dǎo)致這個節(jié)點加入新的群集時失敗“計算機已加入群集”。
解決:進入注冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ClusSvc,Start項的值應(yīng)該是2,改為4。
5、在數(shù)據(jù)庫創(chuàng)建可用性組時,缺少選項“Windows Server 故障轉(zhuǎn)移群集”,只有兩個選項(EXTERNAL 和 NONE)。
解決:重啟SQLSERVER服務(wù)。
6、更改數(shù)據(jù)的所有者。
解決:ALTERAUTHORIZATIONONDATABASE::DBNAMETO[賬戶]
到此這篇關(guān)于Windows故障轉(zhuǎn)移群集 和 SQLServer AlwaysOn 搭建教程的文章就介紹到這了,更多相關(guān)SQLServer AlwaysOn 搭建內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
sqlserver數(shù)據(jù)庫導(dǎo)入數(shù)據(jù)操作詳解(圖)
本文主要介紹的是怎么使用Microsoft SQL Server Management Studio導(dǎo)入數(shù)據(jù),大家參考使用吧2014-01-01
將Reporting services的RDL文件拷貝到另外一臺機器時報Data at the root level i
在本機開發(fā)了一個Reporting后拷貝到服務(wù)器,然后在Sql Server Business Intelligence Development Studio中添加再打開后會報Data at the root level is invalid.錯誤2012-06-06
sqlserver數(shù)據(jù)庫危險擴展刪除和恢復(fù)代碼
今天為了實現(xiàn)sqlserver的復(fù)制功能,因為以前刪除了很多的sqlserver的一些會導(dǎo)致不安全因素的擴展,導(dǎo)致很多功能無法用,沒有辦法需要重新的恢復(fù)擴展。2010-07-07

