一次由于SQL Server BUG引起的数据库AlwaysOn主从切换故障分析处理
故障描述
今日在17:10左右,接到业务人员反馈,数据库出现故障,经过初步查看,发现数据库AlwaysOn主从发生了切换
版本信息
数据库版本:SQL Server 2016 SP1
操作系统版本:Windows Server 2016
故障分析过程
由于之前发生过CPU及内存使用率过高导致系统资源不足发生了主从切换,初步推断也是由于系统资源不足导致主从响应超时导致被判断为主节点故障继而发生了切换。
首先查看sqlserver日志:
日志中出现了未出现过的报错,报错信息如图上。
通过查阅资料及微软官方文档,发现该报错和如下报错相匹配:
KB4338890 - FIX: "Non-yielding Scheduler" error and SQL Server appears unresponsive in SQL Server 2014, 2016 and 2017
该报错在SQL Server 2016版本的数据库中需要升级到SQL Server 2016 SP2才能进行修复:
故障处理
由于发生了切换,从节点已经变成主库,主库顺利切换为从库,考虑到原主库有部分库未进行同步,为了保障业务正常进行,手动进行了故障转移,恢复故障前的主从关系。
为了数据库安全稳定的运行,避免该报错再次出现,将会计划进行数据库版本升级。