SQL Server的AlwaysOn錯誤19456和41158


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 

本文版權歸作者所有,未經作者同意不得轉載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM