首頁 > 軟體

Windows故障轉移群集 和 SQLServer AlwaysOn 設定搭建詳細教學

2023-03-05 14:03:53

最詳細的 SQLSERVER ALWAYSON設定教學

一、準備工作:

1、準備域控:伺服器都在同一個域控(以下假設所在域控為 AAA.COM)。

2、開啟服務:域控要開啟Remote Procedure Call (RPC)服務。

3、安裝角色和服務:納入群集節點的伺服器必須先新增角色和功能 .NET3.5 和 故障轉移群集,防火牆開啟兩個共用埠135、445,和端點埠5022,要開啟Remote Registry服務。

4、建專用域賬號:在域控新建資料庫服務專用賬號 wsfc_sqlserver@AAA.com,密碼:********。

5、設定仲裁共用資料夾:去域控下非資料庫節點伺服器上建立一個共用資料夾(如:\10.0.XXX.XXXWIN故障轉移群集共用仲裁盤專用),專門用於仲裁共用檔案,授予wsfc_sqlserver@AAA.com所有共用許可權。

6、資料庫相關:

6.1、為新建域賬號授權:在各節點伺服器將此wsfc_sqlserver@AAA.com加入管理員組,並在服務中將其設定為 SQLSERVER服務的登入身份,並賦予SQLSERVER的sysadmin角色(後邊就用這個賬號登入SQLSERVER設定AlwaysOn)。

USE master
CREATE LOGIN [AAAwsfc_sqlserver] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
ALTER SERVER ROLE [sysadmin] ADD MEMBER [AAAwsfc_sqlserver]
go

6.2、整理節點伺服器資料資料夾:每臺節點伺服器的資料庫都要放到相同的位置,資料夾路徑要全部相同,副本伺服器上要先按照主伺服器建好資料夾。

6.3、設定節點伺服器資料備份共用資料夾:每臺節點伺服器建一個專門用於存放資料庫備份及同步檔案的資料夾,設定共用,並加上管理員組 的所有共用許可權(在之前wsfc_sqserever@AAA.com已加入管理員組)(注意幹掉預設的EveryOne許可權)。

6.4、同步資料庫賬號:在同步之前,在輔助副本伺服器資料庫上先建立好與主副本資料庫一樣的資料庫賬號(用EXEC sp_help_revlogin;進行匯出匯入,確保所有副本上的賬號完全一致(包括SID要一致))。

二、搭建故障轉移群集

1、選擇節點伺服器

2、下一步驗證設定,選“否”。

3、定義群集名稱和虛擬地址。

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

5、群集建立完成後,本機會自動生成一個使用者CLIUSR,此使用者是用來啟動和執行群集服務的,千萬不要動它,否則會導致群集服務中斷。

6、設定群集仲裁(右鍵建立好的群集 >> 更多操作 >> 設定群集仲裁設定)

三、搭建資料庫AlwaysOn

1、做好第一節第6點的相關準備(6、資料庫相關)

2、建立SQL別名(32位元):在每臺節點伺服器都加上所有節點資料庫別名(範例名稱+IP+埠 ),確保可以通過別名存取對應資料庫。

3、啟用 AlwaysOn(SQLSERVER設定管理器)

4、建立資料庫證書(一定要配,否則 AlwaysOn可用性組建好了,但是副本會連線不上(顯示一把紅色的×),)

4.1、在每臺節點資料庫,建立並安裝證書:

USE master;
GO
--建立主金鑰。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '******************';
--建立證書。 把CERT_xxx_x1換成自己要的名字。
CREATE CERTIFICATE CERT_xxx_x1 WITH SUBJECT = 'CERT_xxx_x1', START_DATE = '2022-01-01',EXPIRY_DATE = '2099-12-30';
--把剛才建立的證書備份到檔案。 把CERT_xxx_x1換成自己要的名字。
BACKUP CERTIFICATE CERT_xxx_x1 TO FILE = 'D:DataBasecertCERT_xxx_x1.cer';
--建立終結點,設為證書驗證。 把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、在每臺節點資料庫,載入群集內其他節點資料庫的證書:

USE master;
CREATE CERTIFICATE CERT_xxx_x1 FROM FILE = 'd:DataBasecertCERT_xxx_x1.cer';
CREATE CERTIFICATE CERT_xxx_x2 FROM FILE = 'd:DataBasecertCERT_xxx_x2.cer';
CREATE CERTIFICATE CERT_xxx_x3 FROM FILE = 'd:DataBasecertCERT_xxx_x3.cer';

5、建立AlwaysOn高可用組(資料庫 >> Always On高可用性 >> 可用性組 >> 右鍵新建)

5.1、指定主副本&輔助副本

5.2、端點(不用設定,預設即可)

5.3、偵聽器

5.4、唯讀路由

唯讀路由的使用:

同一個域AAA:可以使用AG23013,8887 或 AG23013.AAA.COM,8887 進行存取。

不同域BBB:可以在BBB域建立一條記錄指向偵聽器的IP進行存取。

連線字串預設存取主副本,可讀寫。如果要唯讀,就在連線字串中新增 ApplicationIntent=ReadOnly;MultiSubnetFailover=true,指定存取唯讀副本實現讀寫分離。

5.5、設定資料同步方式

5.6、再下一步下一步直到完成就行了,就可以在主副本所在資料庫和輔助副本所在資料庫分別看到下圖:

5.7、資料庫裡面的“AlwaysOn高可用組”建立成功後會有如下變化:

5.7.1、在故障轉移群集內會自動產生一個以“可用性組名”命名的角色,角色內已包含偵聽器,如下圖:

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

四、過程中可能遇到的問題

1、如果要分離資料庫,出現錯誤“無法對資料庫‘XXX‘執行刪除,因為它正用於複製”

解決:先 sp_removedbreplication'DBNAME';然後再分離。

2、資料庫“正在還原”

解決:如果後續還要將此資料庫加入到可用性組,就使用:RESTOREDATABASEDBNAMEWITHNORECOVERY; 反之使用 WITH RECOVERY。

PS:使用WITH RECOVERY後,還要從新新增到可用性組時可能會出現如下錯誤:

解決辦法(右鍵資料庫>>所有任務>>還原>>資料庫>>選項選單>>恢復狀態>>選擇”RESTORE WITH NORECOVERY”),操作完成後,再去可用性組裡邊的可用性資料庫,右鍵>>聯機:

3、執行手動故障轉移後,副本資料庫可能狀態為“未同步”,且無法連線。

解決:在“未同步”的資料庫執行:ALTERDATABASEDBNAMESETHADR RESUME;

4、銷燬群集時,沒有先逐出節點,直接刪群集,導致這個節點加入新的群集時失敗“計算機已加入群集”。

解決:進入登入檔 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesClusSvc,Start項的值應該是2,改為4。

5、在資料庫建立可用性組時,缺少選項“Windows Server 故障轉移群集”,只有兩個選項(EXTERNAL 和 NONE)。

解決:重啟SQLSERVER服務。

6、更改資料的所有者。

解決:ALTERAUTHORIZATIONONDATABASE::DBNAMETO[賬戶]

到此這篇關於Windows故障轉移群集 和 SQLServer AlwaysOn 搭建教學的文章就介紹到這了,更多相關SQLServer AlwaysOn 搭建內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com