SQL Server的AlwaysOn錯誤19456和41158
最近在公司搞異地數據庫容災,使用AlwaysOn的異地節點進行數據同步,在搭建的過程中遇到了一些問題
軟件版本
SQL Server2014
Windows2012R2
網絡環境
兩個機房,一個機房是一個網段,另一個機房是另一個網段,也就是兩個子網,兩個網段,但是在同一個域中,而且使用了VPN
AlwaysOn是支持多子網的,在跨機房,多子網環境有幾個地方需要注意
1、在搭建過程中需要把異地節點的投票權去掉,這個在搭建過程中沒有遇到問題
NodeWeight
在任意集群節點上以域用戶登錄計算機,並以管理員身份運行powershell,並執行下面命令,JXxx08為異地節點的計算機名,把JXxx08節點的投票權設置為0
命令如下
Import-Module FailoverClusters $node ="JXxx08" (Get-ClusterNode $node).NodeWeight = 0 $cluster = (Get-ClusterNode $node).Cluster $nodes = Get-ClusterNode -Cluster $cluster $nodes | Format-Table -property NodeName, State, NodeWeight
2、由於可用性組建立了偵聽器,那么在failover的時候會遇到偵聽器IP不能覆蓋另一個子網的問題,導致報錯
無法將實例xxx聯接到可用性組xxx
服務器“xxxxxx”無法承載為可用性組偵聽器配置的任何 IP 地址。或者配置可承載指定 IP 地址之一的公共群集網絡,或者添加可在此服務器的公共群集網絡上承載的另一個偵聽器 IP 地址。
無法將本地可用性副本聯接到可用性組“xxxxxx”。該操作遇到了 SQL Server 錯誤 19456,已被回滾。有關詳細信息,請查看 SQL Server 錯誤日志。在錯誤根源得到糾正后,請重試 ALTER AVAILABILITY GROUP JOIN 命令。 (Microsoft SQL Server,錯誤: 19456)
解決這個問題的方法是在偵聽器里再添加另一個網段的vip
這樣偵聽器現在有兩個網段的vip了,異地機房的偵聽器IP在添加之后會自動脫機,不用理會它
3、由於是新添加的異地節點,添加到已有的可用性組中,那么可能遇到下面這個報錯
無法將實例xxx聯接到可用性組xxx
無法將可用性副本聯接到可用性組xx,該操作遇到了SQL Server錯誤41106,已被回滾。
有關詳細信息,請查看 SQL Server 錯誤日志。在錯誤根源得到糾正后,請重試 ALTER AVAILABILITY GROUP JOIN 命令。 (Microsoft SQL Server,錯誤: 41158)
這個問題跟多子網無關,在這里也順便列出來了
解決方法是再隨便新建一個AG,把異地節點也加入到這個AG里面,就可以解決
因為異地節點是新建進來的節點,AlwaysOn的鏡像端點還沒有設置才導致報上面的錯誤
希望這篇文章能幫助大家
如有不對的地方,歡迎大家拍磚o(∩_∩)o
本文版權歸作者所有,未經作者同意不得轉載。