SqlServer2017 AlwaysOn 讀寫分離 無域控

一、說明

配置環境

 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

 

二、 配置操作系統環境

  1. 修改計算機名添加 dns 後綴名 (所有節點)

 

 

 

 

  1. 以administrator 登錄並添加密碼(所有節點)

 

 

 

  1. 打開 路徑 C:\Windows\System32\drivers\etc  下 的hosts 文件配置相關映射 (所有節點+測試機)

 

 

  1. 打開防火牆設置允許通過的應用和功能(所有節點)

 

 

 

 

  1. 網絡設置去掉 ipv6、設置 dns 後綴 、禁止 NetBIOS (所有節點)

 

 

 

  1. 控制面板-》所有控制面板項-》網絡和共享中心-》更改高級共享設置 -》啓用網絡發現 (所有節點)

 

 

 

  1. 添加故障轉移羣集功能(所有節點)

 

 

  1. 創建故障轉移羣集(主節點)

 

 

 

 

三、 配置故障轉移

  1. 安裝 SqlServer 2017 和 SSMS (過程略)

 

  1. 配置SQL Server AlwaysOn (所有節點)

 

 

 

 

 

  1. 添加共享文件夾(主節點)

 

 

 

  1. 創建數據庫的證書(所有節點)

 

 


--主節點上執行:創建主密鑰/證書/端點,備份證書到共享文件夾中。
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 

 

 

 

  1. 加入其它數據庫的節點(所有節點)
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 

 

 

 

 

 

 

  1. 新增可用性組(主節點)

 

 

 

 

一路下一步

 

  1. 設置完後添加偵聽器

 

 

 

 

 

四、 配置讀寫分離

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

 

 

 

 

五、 測試讀寫分離負載均衡

 

 

 

 

 

  • 遇到的問題
  1. 網絡發現設置不了

計算機(右鍵)----管理----服務與應用程序----服務
  分別啓動以下服務,
Function Discovery Resource Publication
SSDP Discovery
UPnP Device Host

 

  1. 可用性組創建失敗

如果出現這個錯誤,就在【SqlServer 配置管理器】中禁用,再啓用 alwaysOn,並重啓服務

 

3.如果遇到羣集節點加不上去,請查看是否所有節點都正常,且要加的節點上連上 羣集管理器

  1. 要是出現了偵聽器添加失敗的問題,很不幸,找不到原因,只有切換下主從節點多試幾次看看,會有差不多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

感謝幾位博主

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章