Por que esses dois DMVs da HADR relatam estados diferentes?

8

SQL Server 2012 (11.0.5058.0) Enterprise Edition

Temos 8 grupos de disponibilidade em um cluster 2 (HA) +1 (DR) e nossas DMVs de monitoramento estão relatando resultados que me confundem. 6 Grupos de disponibilidade são configurados para HA e DR, 1 está configurado apenas para HA e 1 está configurado apenas para DR.

Cada um dos 6 grupos de disponibilidade de HA / DR possui "SQLB" como primário e "SQLA" como réplica secundária de HA (síncrona) e "SQLC" como réplica secundária (assíncrona).

Nos dois secundários:

SELECT dhags.group_id, dhags.synchronization_health_desc
FROM sys.dm_hadr_availability_group_states dhags

relata que toda a integridade da sincronização de replicação do Grupo de Disponibilidade é NOT_HEALTHYe

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 HEALTHY.

A réplica primária relata todos os grupos de disponibilidade e réplicas com uma integridade de sincronização HEALTHY.

Embora eu entenda que um relata a integridade da sincronização de réplicas e o outro relata a integridade da sincronização de AG, parece-me lógico 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 descreve como a saúde é determinada em cada nível.

Por que os secundários NOT_HEALTHYrelatariam a integridade da sincronização do Grupo de Disponibilidade, mas HEALTHYa integridade da sincronização de réplica, e por que isso difere do relatório da primária?

swasheck
fonte
Você pode confirmar que está vendo NOT_HEALTHYapenas na réplica secundária do ASYNC?
Kin Shah
Estou vendo NOT_HEALTHYnas réplicas SYNC e ASYNC.
swasheck

Respostas:

5

Infelizmente, os estados sys.dm_hadr_availability_replica não são um indicador confiável de integridade da réplica. Aqui está o item Connect em um dos erros nos quais encontramos o DMV para parar 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 Conectar está marcado como Não será corrigido. Trombone triste.

Brent Ozar
fonte
O link chega a uma página informando que o MS Connect se aposentou. As perguntas e respostas foram em 2015. Quatro anos depois. Estou aqui porque estou vendo a mesma coisa que o OP. Eu acho que eles queriam dizer que "não vai consertar". Isso é um pouco manco. Por outro lado, alguém conhece um bom script para relatar a integridade e a configuração do AG, do grupo à réplica e o nível de sincronização do banco de dados?
youcantryreachingme 8/08/19
PS. Para mim, sys.dm_hadr_availability_group_states.synchronization_health_desc(o que eu entendo é o relatório sobre a saúde de todo o grupo), reporta os NOT_HEALTHYsecundários, mas HEALTHYos primários (3 réplicas). Os documentos descrevem a coluna como "um pacote cumulativo de informações de sincronização de todas as réplicas de disponibilidade no grupo de disponibilidade". Isso mostra disparidade no sistema sem sequer olhar para sys.dm_hadr_availability_replica_states (que é, presumivelmente, de onde os dados estão sendo acumulados).
Youcantryreachingme 8/08/19
@youcantryreachingme essa é uma pergunta diferente - sua melhor aposta seria iniciar uma nova pergunta.
Brent Ozar