最近遭遇了一次有点奇怪的Always on group 故障切换,Always on group由两台SQL Server 2014组成,增加了一个文件共享见证确保可以完成标准的仲裁。
数据量很小,几G的数据。由于某些原因,需要手工做一下故障切换,挑选了一个没有业务操作的时间进行故障切换,结果意外的失败了。错误信息如下,有点莫名其妙的感觉:
息 41066,级别 16,状态 0,第 1 行
无法使 Windows Server 故障转移群集(WSFC)资源(ID“fb73b4a5-8ab1-4347-aaa9-c80a08b97d43”)联机(错误代码 5942)。WSFC 服务可能未在运行、可能在其当前状态下无法访问,或是 WSFC 资源未处于可接受请求的状态。有关此错误代码的信息,请参阅 Windows 开发文档中的“系统错误代码”。
消息 41160,级别 16,状态 0,第 1 行
无法将可用性组“XXXX”的本地可用性副本指定为主副本。该操作遇到了 SQL Server 错误 41066,已被终止。请查看前面的错误和 SQL Server 错误日志,以了解有关该错误和更正操作的更多详细信息。
检查Always on的工作状态,一切正常,重启服务也能立即恢复正常的Always on状态。群集的工作也十分正常,对群集做验证,也没有发现任何不对的地方。
切换是必须要做的,找不到原因只能Try and Try了,反正现在月黑风高,晕,是夜深人静。先把文件共享验证去掉,失败,无法去掉,换用Powershell脚本,这次成功了,但仍然无法切换。
尝试将故障结点逐出再重新加入,操作非常顺利,看起来结点是正常的,但仍然无法切换。
看来需要把Always on拆了重做,先删除Listener,删除完成之后尝试切换,居然十分顺利的成功切换了,看来问题是出在这个Listener上了。
尝试在切换后把Listener加上,失败,报如下错误:
消息 41066,级别 16,状态 0,第 1 行
无法使 Windows Server 故障转移群集(WSFC)资源(ID“65d1d1c1-ed6d-456d-bfc4-9c19d5da431d”)联机(错误代码 5942)。WSFC 服务可能未在运行、可能在其当前状态下无法访问,或是 WSFC 资源未处于可接受请求的状态。有关此错误代码的信息,请参阅 Windows 开发文档中的“系统错误代码”。
消息 19476,级别 16,状态 4,第 1 行
尝试为侦听器创建网络名称和 IP 地址失败。WSFC 服务可能未在运行或在其当前状态下无法访问,或者为网络名称和 IP 地址提供的值可能不正确。请检查 WSFC 群集的状态并且由网络管理员来验证该网络名称和 IP 地址。
这次的原因似乎有点清晰,但这个Listener之前是成功的,而且切回到原来的主副本,也能成功创建,所以这个Listener本身的信息应该没有什么问题。
能怀疑的首要目标就是两个结点的网络配置了,对比了一下,故障结点网络配置中,子网掩码居然不一样。
看来基本上不用排查了,问题应该在这里,后来和运维的同事确认后,把子网掩码改正确后,切换就很丝滑了
【本文在个人微信公共号ZJCXC上同步发表】
本文记录了一次在SQL Server 2014的Always On环境中遇到的故障切换失败问题。在尝试手动切换时,遇到了错误41066和41160,经过一系列排查,包括检查服务状态、验证群集、更改节点状态和删除Listener,最终发现故障节点的子网掩码配置不正确是导致问题的原因。修复子网掩码后,故障切换得以顺利完成。
1万+

被折叠的 条评论
为什么被折叠?



