Warum melden diese beiden HADR-DMVs unterschiedliche Zustände?

8

SQL Server 2012 (11.0.5058.0) Enterprise Edition

Wir haben 8 Verfügbarkeitsgruppen in einem 2 (HA) + 1 (DR) -Cluster und unsere Überwachungs-DMVs melden Ergebnisse, die mich verwirren. 6 Verfügbarkeitsgruppen sind für HA und DR konfiguriert, 1 ist nur für HA konfiguriert und 1 ist nur für DR konfiguriert.

Jede der 6 HA / DR-Verfügbarkeitsgruppen hat "SQLB" als primäres und "SQLA" als sekundäres (synchrones) HA-Replikat und "SQLC" als sekundäres (asynchrones) Replikat.

Auf beiden Sekundärteilen:

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

meldet, dass alle Synchronisierungszustände der Verfügbarkeitsgruppenreplikation NOT_HEALTHYund sind

select replica_id,synchronization_health_desc
from sys.dm_hadr_availability_replica_states

meldet, dass alle Replikate einen Synchronisierungszustand von haben HEALTHY.

Das primäre Replikat meldet alle Verfügbarkeitsgruppen und Replikate mit einem Synchronisierungszustand von HEALTHY.

Obwohl ich verstehe, dass einer über den Zustand der Replikatsynchronisierung und der andere über den Zustand der AG-Synchronisierung berichtet, erscheint es mir logisch, dass wenn der detailliertere Zustand (AG) nicht gesund wäre, dies den Gesamtzustand des breiteren Kontexts (Replikat) beeinträchtigen würde. . Ich kann keine MSDN-Dokumentation finden, die beschreibt, wie der Zustand auf jeder Ebene bestimmt wird.

Warum melden die Secondaries den NOT_HEALTHYSynchronisierungszustand der Verfügbarkeitsgruppe, aber den HEALTHYSynchronisierungszustand der Replikate, und warum unterscheidet sich dieser vom Primärbericht?

Swasheck
quelle
Können Sie bestätigen, dass Sie nur NOT_HEALTHYauf dem sekundären ASYNC-Replikat sehen?
Kin Shah
Ich NOT_HEALTHYsehe sowohl auf den SYNC- als auch auf den ASYNC-Replikaten.
Swasheck

Antworten:

5

Leider ist der Status sys.dm_hadr_availability_replica kein verlässlicher Indikator für den Zustand des Replikats. Hier ist das Connect-Element für einen der Fehler, bei denen diese DMV nicht mehr aktualisiert wird. Beachten Sie in den Kommentaren, dass log_send_queue_size in der DMV sys.dm_hadr_database_replica_states 0 anzeigt, selbst wenn Protokolldaten gesendet werden sollen.

Beachten Sie, dass das Element Verbinden als nicht repariert markiert ist. Traurige Posaune.

Brent Ozar
quelle
Der Link erreicht eine Seite mit der Meldung, dass MS Connect in den Ruhestand getreten ist. Diese Fragen und Antworten waren 2015. Es ist vier Jahre später. Ich bin hier, weil ich das Gleiche sehe wie das OP. Ich denke, sie meinten, dass "nicht reparieren". Das ist ein bisschen lahm. Auf der anderen Seite - kennt jemand ein gutes Skript für die Meldung des AG-Zustands und der Konfiguration, von der Gruppe über das Replikat bis zur Datenbanksynchronisierungsebene?
youcantryreachingme
PS. Für mich sys.dm_hadr_availability_group_states.synchronization_health_desc(von dem ich verstehe, dass es über den Gesundheitszustand der gesamten Gruppe berichtet) wird NOT_HEALTHYüber Sekundärdaten berichtet , aber HEALTHYüber die Primärdaten (3 Repliken). Dokumente beschreiben die Spalte als "Rollup der Synchronisationsgesundheit aller Verfügbarkeitsreplikate in der Verfügbarkeitsgruppe". Dies zeigt Unterschiede innerhalb des Systems, ohne auch nur sys.dm_hadr_availability_replica_states zu betrachten (vermutlich von wo aus die Daten aufgerollt werden).
youcantryreachingme
@youcantryreachingme das ist eine andere Frage - Ihre beste Wette wäre es, eine neue Frage zu beginnen.
Brent Ozar