可用性组联机
此监视器检查可用性组的联机或脱机状态。当可用性组的群集资源处于脱机状态或可用性组不具有主副本时,此监视器将无法正常运行,并引发警报。当可用性组的群集资源处于联机状态且可用性组具有主副本时,此监视器将正常运行。
该可用性组处于脱机状态并且不可用。该问题可能是由于托管主副本的服务器实例中的失败或者 WSFC 可用性组资源进入脱机状态导致的。
可用性组未配置为自动故障转移模式,并且主副本变得不可用且可用性组中所有副本的角色都变为 RESOLVING。
主副本实例服务已关闭或无响应。
可用性组与群集的连接有问题。
可用性组配置为自动故障转移模式,但是自动故障转移由于错误未成功完成。
在自动故障转移期间,对目标副本的主副本就绪检查失败,并且没有副本可以变为新的主副本。
群集中的可用性组资源变为脱机状态。
任何依赖的群集资源遇到严重问题并变为脱机状态,并且可用性组资源处于脱机状态,直到依赖的资源变为联机状态。
群集中的严重问题导致禁用了可用性组资源。
对可用性组存在正在进行的自动、手动或强制故障转移。
如果主副本的 SQL 服务器实例关闭,可以重新启动服务器并且检查可用性组是否恢复到正常状态。
如果自动故障转移好像已失败,可以检查某一副本上的所有数据库是否都与以前已知的主副本同步,然后故障转移到该副本。否则,选择数据丢失最少的副本,然后恢复到故障转移或强制故障转移模式。
如果群集中的资源在 SQL server 实例处于正常运行状态时脱机,可以使用群集管理器检查群集运行状况或是否出现任何问题。可以使用群集管理器工具尝试将可用性组资源联机。
如果正在进行故障转移,则等待其完成。
名称 | 说明 | 默认值 |
已启用 | 启用或禁用工作流。 | 是 |
生成警报 | 定义工作流是否生成警报。 | 否 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
超时(秒) | 指定工作流在关闭之前允许运行的时间,并标记为失败。 | 300 |
数据库连接超时(秒) | 如果在指定期间无法访问数据库,工作流将失败并注册一个事件。 | 15 |
Target | Microsoft.SQLServer.Windows.AvailabilityGroupHealth |
Parent Monitor | System.Health.AvailabilityState |
Category | AvailabilityHealth |
Enabled | True |
Alert Generate | False |
Alert Auto Resolve | True |
Monitor Type | Microsoft.SQLServer.Windows.MonitorType.AlwaysOnSystemPolicy |
Remotable | True |
Accessibility | Public |
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.AvailabilityGroupHealth.AvailabilityGroupOnline" Accessibility="Public" Enabled="true" Target="SqlDiscW!Microsoft.SQLServer.Windows.AvailabilityGroupHealth" ParentMonitorID="Health!System.Health.AvailabilityState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.AlwaysOnSystemPolicy" ConfirmDelivery="false">
<Category>AvailabilityHealth</Category>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="HealthState" HealthState="Success"/>
<OperationalState ID="Critical" MonitorTypeStateID="ErrorState" HealthState="Error"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<ConnectionString>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<PolicyName>AlwaysOnAgOnlineStateHealthPolicy</PolicyName>
<BagKey>1-$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.AvailabilityGroupHealth"]/AvailabilityGroupName$</BagKey>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>