目錄html
[========]sql
AlwaysOn 可用性組概述 (SQL Server)數據庫
配置計算機的 DNS 後綴,注意在同個工做組
windows
每一個節點的機器都要作域名解析,修改 host 文件C:\Windows\System32\drivers\etc
服務器
節點服務器添加故障轉移羣集功能
網絡
等待安裝完成負載均衡
配置集羣的管理名稱和管理IP
工具
等待配置完成
測試
能夠查看集羣報告,稍後配置文件共享見證.net
因爲咱們是兩個節點的故障轉移集羣,因此須要加上共享文件夾,若是是奇數節點,這一步是不須要作的!
\\XIANGMU4TEST01\share
,並設置 Everyone 徹底控制的權限開啓 AlwaysOn
須要重啓 SQL Server 服務
檢查,若是 AlwaysOn 啓用成功,在服務器屬性裏能夠看到啓用HADR爲True
SELECT * FROM sys.dm_hadr_cluster_members;
SELECT * FROM SYS.[dm_hadr_cluster]
可是既然節點沒有加入AD,那麼久不能用域認證,只能用證書認證,所以須要建立證書和端點。在配置可用性組前各節點進行證書認證信任。
修改 SQL 服務登錄帳號爲本機管理員帳號
--節點二:建立主密鑰/證書,備份證書。 USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'AAA111aaa'; GO CREATE CERTIFICATE Cert_server228 WITH SUBJECT = 'Cert_server228', START_DATE = '2017-01-01',EXPIRY_DATE = '2099-12-30'; GO BACKUP CERTIFICATE Cert_server228 TO FILE = 'C:\Storage\Cert_server228.cer'; GO
注意:備份證書的文件夾要先建立好,而且賦予權限
--節點二:建立其餘節點證書 USE master; GO CREATE CERTIFICATE Cert_server227 FROM FILE = 'C:\Storage\Cert_server227.cer'; GO
證書建立好後以下
--節點:建立端點 CREATE ENDPOINT [testag_endpoint] AUTHORIZATION [POSTEST2-2016\Administrator] STATE=STARTED AS TCP (LISTENER_PORT = 5023, LISTENER_IP = ALL) FOR DATA_MIRRORING (ROLE = ALL,AUTHENTICATION = CERTIFICATE Cert_server228, ENCRYPTION = REQUIRED ALGORITHM AES) GO
若是存在已有的端點,則須要將已有端點刪除
在主節點服務器操做新建可用性組。
選擇數據庫,要求數據庫已經進行了完整備份
添加副本節點,並勾選自動故障轉移,設置輔助副本爲可讀副本
將端點 URL 設置爲 IP 方式,這裏端點會顯示爲咱們上面建立的端點,登錄帳號爲咱們上面設置的帳號
「備份首選項」和「偵聽器」不須要設置,保持默認就行,可用性偵聽器咱們後面再添加,能夠直接點擊「下一步」
數據同步這裏建議使用完整的數據庫和日誌備份的方式更方便,須要有一個共享文件夾,而且節點服務器要有相同的數據庫文件目錄結構
等待可用性組建立成功
建立成功後數據庫狀態顯示爲已同步
故障轉移集羣會顯示擁有一個羣集角色
顯示面板能夠查看集羣信息
一個偵聽器包括虛擬IP地址、虛擬網絡名稱、端口號三個元素,一旦建立成功,虛擬網絡名稱會註冊到DNS中,同時爲可用性組資源添加IP地址資源和網絡名稱資源。用戶就可使用此名稱來鏈接到可用性組中。
添加偵聽器
選擇使用靜態 IP
建立成功後,在故障轉移集羣管理器裏的角色節點,能夠看到客戶端訪問名稱和 IP 地址
鏈接數據庫時使用偵聽器的地址
SQL Server 2016 支持多個只讀副本負載分擔只讀操做。
右鍵一個可用性副本能夠查看副本的只讀性設置:
主角色中支持的鏈接訪問類型:
ApplicationIntent=ReadWrite
或未設置鏈接條件的鏈接。不容許 ApplicationIntent=ReadOnly
的鏈接。僅容許讀寫鏈接可幫助防止客戶錯誤地將讀意向工做負荷鏈接到主副本。修改腳本:
USE [master] GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (PRIMARY_ROLE(ALLOW_CONNECTIONS = READ_WRITE)) GO
輔助角色支持的鏈接訪問類型:
ApplicationIntent=ReadOnly
的鏈接,其它的鏈接方式沒法鏈接。修改腳本:
USE [master] GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (SECONDARY_ROLE(ALLOW_CONNECTIONS = READ_ONLY)) GO
Sql Server 配置管理工具找到數據庫實例的網絡配置,
右鍵 TCP/IP,默認配置的是動態端口
這裏修改成固定端口 1433
最後須要重啓 Sql Server 服務。
執行下面 sql 獲取可用性組名稱:
select name,* from sys.availability_groups
執行下面 sql 獲取要配置的可用性副本名稱(服務器實例):
select replica_server_name,* from sys.availability_replicas
USE [master] GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://10.98.98.227:1433')) GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST2-2016\POSTEST' WITH (SECONDARY_ROLE(READ_ONLY_ROUTING_URL = N'TCP://10.98.98.228:1433')) GO
也能夠右鍵可用性組選擇屬性,經過 UI 方式更改
USE [master] GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST1-2016\POSTEST' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('POSTEST2-2016\POSTEST'),'POSTEST1-2016\POSTEST'))); GO ALTER AVAILABILITY GROUP [posTestAg] MODIFY REPLICA ON N'POSTEST2-2016\POSTEST' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=(('POSTEST1-2016\POSTEST'),'POSTEST2-2016\POSTEST'))); GO
使用「()」對只讀路由列表進行分組,
List 1: 'POSTEST1-2016\POSTEST'
List 2: 'POSTEST2-2016\POSTEST'
按以下方式工做:
若是第一個列表中的任一副本可用,將會恢復路由到第一個列表
sqlcmd -S 10.98.98.231 -K Readonly -d test -Q "select @@servername" -e
只讀鏈接被鏈接到輔助副本
使用 SSMS 或者 EF 等須要在鏈接字符串設置參數ApplicationIntent=ReadOnly
注意:
想要使用輔助副本負載讀操做,必需要在鏈接字符串中配置爲只讀鏈接,而後在程序中指定使用只讀鏈接進行數據庫讀取操做,AlwaysOn 自身不能自動負載均衡。
爲每一個數據庫節點配置登錄帳號,而後經過監聽器使用該帳號登錄數據庫。
主副本建立登錄帳號 satest
SELECT * FROM [test]..sysusers
CREATE LOGIN [satest] WITH PASSWORD=N'xxxxxxx', SID =0x99AD266AFD26F841B3E49EF9633B0D4B, DEFAULT_DATABASE=[test], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
建議使用 SSMS 中 AlwaysOn 進行手動故障轉移。
文章參考:
SQL Server 2016 無域羣集配置 AlwaysON 可用性組
SQL Server 2016 AlwaysOn 安裝及配置介紹
SQL SERVER 2016 AlwaysOn 無域集羣+負載均衡搭建與簡測 https://www.cnblogs.com/ajiangg/p/3668936.html