为什么这两个 HADR DMV 报告不同的状态?

swa*_*eck 8 dmv sql-server-2012 availability-groups

SQL Server 2012 (11.0.5058.0) 企业版

我们在 2(HA)+1(DR) 集群中有 8 个可用性组,我们的监控 DMV 报告的结果让我感到困惑。6 个可用性组用于 HA 和 DR,1 个仅用于 HA,1 个仅用于 DR。

6 个 HA/DR 可用性组中的每一个都将“SQLB”作为主副本,将“SQLA”作为辅助(同步)HA 副本,将“SQLC”作为辅助(异步)副本。

在两个辅助节点上:

SELECT dhags.group_id, dhags.synchronization_health_desc
FROM sys.dm_hadr_availability_group_states dhags
Run Code Online (Sandbox Code Playgroud)

报告所有可用性组复制同步运行状况NOT_HEALTHY

select replica_id,synchronization_health_desc
from sys.dm_hadr_availability_replica_states
Run Code Online (Sandbox Code Playgroud)

报告所有副本的同步健康状况为HEALTHY.

主副本报告同步运行状况为 的所有可用性组和副本HEALTHY

虽然我知道一个报告副本同步健康状况,另一个报告 AG 同步健康状况,但在我看来,如果更细化 (AG) 状态不健康,这将影响更广泛上下文(副本)的整体健康状况,这似乎是合乎逻辑的. 我找不到描述如何在每个级别确定运行状况的 MSDN 文档。

为什么辅助节点会报告NOT_HEALTHY可用性组同步健康状况,但会报告HEALTHY副本同步健康状况,为什么这与主要报告不同?

Bre*_*zar 5

遗憾的是, sys.dm_hadr_availability_replica 状态并不是副本健康状况的可靠指标。这是我们遇到的 DMV 停止刷新的错误之一的 Connect 项- 请注意评论中 DMV sys.dm_hadr_database_replica_states 中的 log_send_queue_size 显示 0,即使有日志数据要发送。

请注意,Connect 项被标记为Won't Fix。悲伤的长号。