如何将Always On可用性组配置为在数据库数据文件不可用时执行故障转移
摘要
在SQL Server Always On可用性组中,仅当数据库事务日志中出现磁盘故障或类似) 错误 (时,数据库级运行状况检测才能执行故障转移。
如果数据文件上发生错误,SQL Server仅将故障通知发送到 Windows Server 故障转移群集 (WSFC) ,并依赖它根据策略配置做出正确的决策。
若要将Always On可用性组配置为在出现错误 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>
是占位符。 需要更改它以匹配你的环境。 此脚本是一个参考示例。 在执行故障转移之前,完整脚本应执行其他检查。