SQL Server 2012 (11.0.5058.0) Enterprise Edition
Temos 8 grupos de disponibilidade em um cluster 2(HA)+1(DR) e nossos DMVs de monitoramento estão relatando resultados que me confundem. 6 grupos de disponibilidade são configurados para HA e DR, 1 é configurado apenas para HA e 1 é configurado apenas para DR.
Cada um dos 6 grupos de disponibilidade de HA/DR tem "SQLB" como primário e "SQLA" como réplica de HA secundária (síncrona) e "SQLC" como réplica secundária (assíncrona).
Em ambos os secundários:
SELECT dhags.group_id, dhags.synchronization_health_desc
FROM sys.dm_hadr_availability_group_states dhags
relata que todas as integridades de sincronização de replicação do Grupo de Disponibilidade são NOT_HEALTHY
e
select replica_id,synchronization_health_desc
from sys.dm_hadr_availability_replica_states
relata que todas as réplicas têm uma integridade de sincronização de HEALTHY
.
A réplica primária relata todos os grupos de disponibilidade e réplicas com integridade de sincronização de HEALTHY
.
Embora eu entenda que um relata a integridade da sincronização da réplica e o outro relata a integridade da sincronização do AG, parece lógico para mim que, se o estado mais granular (AG) não fosse íntegro, isso afetaria a integridade geral do contexto mais amplo (réplica) . Não consigo encontrar a documentação do MSDN que descreva como a integridade é determinada em cada nível.
Por que os secundários relatam NOT_HEALTHY
a integridade da sincronização do Grupo de Disponibilidade, mas HEALTHY
a integridade da sincronização da réplica e por que isso difere do relatório do primário?
Infelizmente, os estados sys.dm_hadr_availability_replica não são um indicador confiável da integridade da réplica. Aqui está o item Connect em um dos bugs que encontramos onde o DMV para de atualizar - observe nos comentários que log_send_queue_size no DMV sys.dm_hadr_database_replica_states mostra 0 mesmo quando há dados de log a serem enviados.
Observe que o item Connect está marcado como Won't Fix. Triste trombone.