一、說明
配置環境
Windows server 2019
SqlServer 2017
設備
PC1(主節點):JF-SQLDB01 IP地址 192.168.50.199
PC2(節點):orangePC IP地址 192.168.50.230
PC3(節點):pearPC IP地址 192.168.50.18
PC4(測試機):DESKTOP-46PCO3Q
羣集名及偵聽規劃
Windows羣集名稱:jfqun
可用性組名稱:SQLAG
SQL偵聽器名稱:jfqunLis IP地址:192.168.50.201(虛擬IP)
DNS 後綴: jf.cn
二、 配置操作系統環境
- 修改計算機名添加 dns 後綴名 (所有節點)
- 以administrator 登錄並添加密碼(所有節點)
- 打開 路徑 C:\Windows\System32\drivers\etc 下 的hosts 文件配置相關映射 (所有節點+測試機)
- 打開防火牆設置允許通過的應用和功能(所有節點)
- 網絡設置去掉 ipv6、設置 dns 後綴 、禁止 NetBIOS (所有節點)
- 控制面板-》所有控制面板項-》網絡和共享中心-》更改高級共享設置 -》啓用網絡發現 (所有節點)
- 添加故障轉移羣集功能(所有節點)
- 創建故障轉移羣集(主節點)
三、 配置故障轉移
- 安裝 SqlServer 2017 和 SSMS (過程略)
- 配置SQL Server AlwaysOn (所有節點)
- 添加共享文件夾(主節點)
- 創建數據庫的證書(所有節點)
--主節點上執行:創建主密鑰/證書/端點,備份證書到共享文件夾中。
USE master;
GO
--drop master key 如果操作失誤用這個命令刪除
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'a_123456'; ----密碼
GO
CREATE CERTIFICATE Cert_DB01
WITH SUBJECT = 'Cert_DB01',
START_DATE = '2017-12-01',EXPIRY_DATE = '2099-12-31'; --證書的有效時間
GO
--要開啓 sql server的 xp_cmdshell 否則後面命令會拒絕訪問
sp_configure 'show advanced options',1
reconfigure
go
sp_configure 'xp_cmdshell',1
reconfigure
go
USE master
exec master..xp_cmdshell 'net use \\Jf-sqldb01\SQLAlwaysOnShare a_123456 /user:192.168.50.199\administrator '--
BACKUP CERTIFICATE Cert_DB01
TO FILE = '\\Jf-sqldb01\SQLAlwaysOnShare\Cert_DB01.cer';
GO
CREATE ENDPOINT [SQLAG_Endpoint]
AUTHORIZATION [Jf-sqldb01\administrator]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING
(ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_DB01, ENCRYPTION = REQUIRED ALGORITHM AES)
GO
- 加入其它數據庫的節點(所有節點)
USE master;
GO
CREATE CERTIFICATE Cert_DB02
FROM FILE = '\\Jf-sqldb01\SQLAlwaysOnShare\Cert_DB02.cer';
GO
------------------------------------------
USE master;
GO
CREATE CERTIFICATE Cert_DB03
FROM FILE = '\\JF-SQLDB01\SQLAlwaysOnShare\Cert_DB03.cer';
GO
- 新增可用性組(主節點)
一路下一步
- 設置完後添加偵聽器
四、 配置讀寫分離
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'PEARPC' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'ORANGEPC',N'JF-SQLDB01'),N'PEARPC')))
GO
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'ORANGEPC' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'PEARPC',N'JF-SQLDB01'),N'ORANGEPC')))
GO
USE [master]
GO
ALTER AVAILABILITY GROUP [SQLAG]
MODIFY REPLICA ON N'JF-SQLDB01' WITH (PRIMARY_ROLE(READ_ONLY_ROUTING_LIST = ((N'PEARPC',N'ORANGEPC'),N'JF-SQLDB01')))
GO
五、 測試讀寫分離負載均衡
- 遇到的問題
- 網絡發現設置不了
計算機(右鍵)----管理----服務與應用程序----服務
分別啓動以下服務,
Function Discovery Resource Publication
SSDP Discovery
UPnP Device Host
- 可用性組創建失敗
如果出現這個錯誤,就在【SqlServer 配置管理器】中禁用,再啓用 alwaysOn,並重啓服務
3.如果遇到羣集節點加不上去,請查看是否所有節點都正常,且要加的節點上連上 羣集管理器
- 要是出現了偵聽器添加失敗的問題,很不幸,找不到原因,只有切換下主從節點多試幾次看看,會有差不多1/8 的機率會成功
4.遇到測試電腦連接 偵聽器 實現只讀連接連不上,請在測試電腦上配置下hosts 文件
參考文章
https://blog.csdn.net/roven257/article/details/78691892
https://www.cnblogs.com/lyhabc/p/6498712.html
https://www.cnblogs.com/chenmh/p/7000236.html
感謝幾位博主