標籤:
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
本文著作權歸作者所有,未經作者同意不得轉載。
SQL Server的AlwaysOn錯誤19456和41158