標簽:MSSQL/節點和共用文件夾多數 概述 之前講過多數節點的仲裁配置,多數節點一般3個節點以上的奇數個節點;常見的是使用3個節點節點多了也是浪費因為Alwayson的只讀路由只能利用到一個只讀副本,但是從Windows2008開始可以用共用文件夾來代替一個節點來充當仲裁;這就又可以節省一臺伺服器 ...
標簽:MSSQL/節點和共用文件夾多數
概述
之前講過多數節點的仲裁配置,多數節點一般3個節點以上的奇數個節點;常見的是使用3個節點節點多了也是浪費因為Alwayson的只讀路由只能利用到一個只讀副本,但是從Windows2008開始可以用共用文件夾來代替一個節點來充當仲裁;這就又可以節省一臺伺服器了只需要兩台資料庫伺服器加任意一臺電腦的共用文件夾,但是一般會選擇在域伺服器上創建共用文件夾,可以使用alwayson的共用網路位置。
資料庫:SQLServer2014 SP2
OS:Windows Server 2008R2
一、配置仲裁
可以在創建故障轉移集群的時候配置,也可以創建完集群後右鍵集群來修改仲裁配置
這裡的共用文件夾路徑使用域伺服器已經創建好的共用網路路徑
註意:這個路徑的許可權必須everyone角色具有讀寫許可權,否則集群會出現以下錯誤提示
二、讀寫分離
當使用兩個節點後,讀寫分離的配置和三個節點會稍微有點區別,假設我現在只有DB01,DB02兩個節點
1.Alwayson屬性配置
註意:主角色中的連接這裡和三個節點不一樣,三個節點這裡可以選擇“僅允許讀/寫連接”,這裡是能選擇“允許所有連接”,否則其中一個節點無法訪問後只讀路由訪問會失敗(返回錯誤982)。
2.語句配置
---建立read指針 - 在當前的primary上為每個副本建立副本對於的tcp連接 ALTER AVAILABILITY GROUP [Alwayson22] MODIFY REPLICA ON N'db01' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://db01.ag.com:1433')) ALTER AVAILABILITY GROUP [Alwayson22] MODIFY REPLICA ON N'db02' WITH (SECONDARY_ROLE (READ_ONLY_ROUTING_URL = N'TCP://db02.ag.com:1433')) ----為每個可能的primary role配置對應的只讀路由副本 --list列表有優先順序關係,排在前面的具有更高的優先順序,當db02正常時只讀路由只能到db02,如果db02故障了只讀路由才能路由到DB01 ALTER AVAILABILITY GROUP [Alwayson22] MODIFY REPLICA ON N'db01' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('db02','db01'))); ALTER AVAILABILITY GROUP [Alwayson22] MODIFY REPLICA ON N'db02' WITH (PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=('db01','db02')));
--查詢優先順序關係 SELECT ar.replica_server_name , rl.routing_priority , ( SELECT ar2.replica_server_name FROM sys.availability_read_only_routing_lists rl2 JOIN sys.availability_replicas AS ar2 ON rl2.read_only_replica_id = ar2.replica_id WHERE rl.replica_id = rl2.replica_id AND rl.routing_priority = rl2.routing_priority AND rl.read_only_replica_id = rl2.read_only_replica_id ) AS 'read_only_replica_server_name' FROM sys.availability_read_only_routing_lists rl JOIN sys.availability_replicas AS ar ON rl.replica_id = ar.replica_id
會發現配置只讀路由列表這裡和之前的三個節點有區別,我用綠色標識了出來;之前三個節點的時候這裡用的是DB03。
三個節點:當DB01節點無法訪問時,DB02節點變成主節點充當讀寫副本,DB03節點充當只讀副本。
兩個節點:當DB01節點無法訪問時,DB02節點變成主節點即充當讀寫副本同時也充當只讀副本。
當停止DB01的服務後仲裁會自動切換到DB02上來,且讀寫和只讀連接都會連接到DB02上。這裡就不做演示從下圖也可以看到單節點DB02線上。
總結
對比三個節點,使用兩個節點可以減少一臺伺服器節省不少人力成本。畢竟故障的情況並不是很多。但是也不得不說一下這種方案的弊端,那就是當一個節點故障後另一個節點要同時承擔讀寫和只讀的兩倍的負擔,使用該方案之前就必須得評估一個節點能否支持得起這種負載壓力!!!
搭建和加入域參考:http://www.cnblogs.com/chenmh/p/4444168.html
搭建故障轉移群集參考:http://www.cnblogs.com/chenmh/p/4479304.html
Alwayson搭建參考:http://www.cnblogs.com/chenmh/p/4484176.html
Alwayson讀寫分離參考:http://www.cnblogs.com/chenmh/p/7000236.html
備註: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明鏈接。 《歡迎交流討論》 |