如何将 Always On 可用性组配置为在数据库数据文件不可用时执行故障转移
总结
在 SQL Server Always On 可用性组中,只有在数据库事务日志中发生错误(磁盘故障或类似)时,数据库级运行状况检测才能执行故障转移。
如果错误发生在数据文件上,SQL Server 只会将失败通知 发送到 Windows Server 故障转移群集 (WSFC),并依赖于它根据策略配置做出正确的决策。
若要将 AlwaysOn 可用性组配置为在出现错误 823 和其他错误时执行故障转移,请使用下列过程之一:
配置故障转移群集管理器
此过程设置 WSFC 策略,以便故障转移到其中一个可能的所有者,而不是尝试在当前主节点上重启角色。
打开“故障转移群集管理器”。
展开群集并选择“ 角色”。
右键单击 AG 角色并选择“属性>策略”。
将指定时间段内最大重启数的值设置为 0。
选中此框 如果所有重启尝试都失败,请在指定的时间段(hh:mm)之后重新开始重启, 然后选择“ 确定”。
确保节点都是 可能的所有者 和 首选所有者。
自定义配置选项
此过程提供了一个示例,演示如何利用 SQL Server 中的可用警报机制并SQL Server 代理来检测错误和执行故障转移。
在 SQL Server Management Studio 中,展开SQL Server 代理,右键单击“警报”,然后选择“新建警报...”。
为“名称”指定值,为“类型”选择“SQL Server 事件警报”,根据列表指定错误号为 823 或任何其他所需错误的值,然后选择“确定”。
选择“ 响应”,选中 “执行作业”,选择所需的作业,然后选择“ 确定”。
在“作业步骤属性”对话框中,指定步骤名称的值,为“类型”选择“操作系统”(CmdExec),然后选择“运行方式”的服务帐户SQL Server 代理。
输入以下故障转移 sqlcmd 命令:
sqlcmd -S <SecondaryReplicaName> -U SQLADMIN -P <YourPassword> -Q "ALTER Availability Group <AGName> Failover"
注意
<SecondaryReplicaName>
、<YourPassword>
和<AGName>
占位符。 需要对其进行更改以匹配环境。 此脚本是参考的示例。 完整脚本应在执行故障转移之前执行其他检查。