• 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 

    本文版权归作者所有,未经作者同意不得转载。

  • 相关阅读:
    ajax、json一些整理(2)
    ajax、json一些整理(1)
    C# DllImport的用法
    asp.net 获取当前项目路径
    C# 中关闭当前线程的四种方式 .
    DataGridView自定义RichTextBox列
    C#winform的datagridview设置选中行
    Other Linker flags 添加 -Objc导致包冲突
    nat打洞原理和实现
    成为顶尖自由职业者必备的七个软技能之四:如何成为销售之王(转)
  • 原文地址:https://www.cnblogs.com/lyhabc/p/5854523.html
Copyright © 2020-2023  润新知