Wenn Sie SQL Server-Verfügbarkeitsgruppen bereitstellen, ist einer der wichtigen Aspekte einer erfolgreichen Bereitstellung die Überwachung der Synchronisierung der sekundären Replikatdatenbanken mit dem primären Replikat. Es gibt mehrere Möglichkeiten, die Replikatsynchronisierung in einer Verfügbarkeitsgruppe zu überwachen, und dieser Beitrag zeigt jede davon und erklärt ihre Vor- und Nachteile,
Eine der einfachsten Möglichkeiten zum Überwachen des Status einer Verfügbarkeitsgruppe, jedes Replikatservers und der Verfügbarkeitsdatenbanken ist das integrierte Dashboard in Management Studio. Das Standardlayout des Dashboards bietet jedoch nicht viele Details und muss angepasst werden, um zusätzliche Informationen zu den Replikatservern sowie den Verfügbarkeitsdatenbanken anzuzeigen. Zusätzliche Spalten können dem Layout über den Link „Spalten hinzufügen/entfernen“ auf dem Dashboard oder über das Rechtsklick-Kontextmenü auf einer der vorhandenen Spaltenüberschriften hinzugefügt werden, wie unten gezeigt:
Anpassen des AG-Dashboards in SSMS
Für die Verfügbarkeitsdatenbanken erhalten Sie durch die Überwachung der Größe der Protokollsendewarteschlange (KB), der Protokollsenderate (KB/s), des geschätzten Datenverlusts (Zeit), der geschätzten Wiederherstellungszeit (Sekunden) und der Synchronisierungsleistung (Sekunden) ein besseres Verständnis des Datenflusses zu den Replikaten und des Gesamtzustands der Verfügbarkeitsdatenbanken. Im folgenden Screenshot habe ich beispielsweise die VM-Netzwerkkonfiguration für SQL03 so geändert, dass sie eine höhere Latenz und einen niedrigeren Durchsatz aufweist, was sich auf die Synchronisierung der Datenbanken auswirkt:
Hier können wir sehen, dass es für SQL03 fast sechs Minuten potenziellen Datenverlust gibt und 505 MB nicht gesendetes Protokoll, das mit einer Rate von 7 MB/s an die Sekundärseite gesendet wird (in diesem Fall eine asynchrone Sekundärseite). . Wohingegen SQL02 derzeit aufgeholt wird und als synchroner Secondary in der Konfiguration keinen Datenverlust aufweist.
Eine Alternative zum Verfügbarkeitsgruppen-Dashboard ist die direkte Abfrage der DMVs, aus denen das Dashboard seine Informationen als Quelle bezieht. Die folgende Abfrage zeigt den aktuellen Status und die Synchronisierungsmetriken für jede Datenbank in einer Verfügbarkeitsgruppe:
SELECT ar.replica_server_name, adc.database_name, ag.name AS ag_name, drs.is_local, drs.is_primary_replica, drs.synchronization_state_desc, drs.is_commit_participant, drs.synchronization_health_desc, drs.recovery_lsn, drs.truncation_lsn, drs.last_sent_lsn, drs.last_sent_time, drs.last_received_lsn, drs.last_received_time, drs.last_hardened_lsn, drs.last_hardened_time, drs.last_redone_lsn, drs.last_redone_time, drs.log_send_queue_size, drs.log_send_rate, drs.redo_queue_size, drs.redo_rate, drs.filestream_send_rate, drs.end_of_log_lsn, drs.last_commit_lsn, drs.last_commit_time FROM sys.dm_hadr_database_replica_states AS drs INNER JOIN sys.availability_databases_cluster AS adc ON drs.group_id = adc.group_id AND drs.group_database_id = adc.group_database_id INNER JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id INNER JOIN sys.availability_replicas AS ar ON drs.group_id = ar.group_id AND drs.replica_id = ar.replica_id ORDER BY ag.name, ar.replica_server_name, adc.database_name;
Indem die DMVs direkt auf dem primären Replikat abgefragt werden, ist es einfach, aktuelle Informationen abzurufen, ohne auf den Aktualisierungszeitraum des Dashboards in Management Studio warten zu müssen. Dies war ein paar Mal nützlich, wenn es um Beratungen mit Kunden ging, bei denen ein Verbindungsfehler zwischen Rechenzentren aufgetreten ist oder bei denen die Konnektivität für eine gewisse Zeit wegen Wartungsarbeiten ausgefallen war und die sekundären Replikate dabei sind, aufzuholen, sobald die Verbindung wiederhergestellt wurde .
Das letzte native Tool zum Überwachen der Synchronisierung von Verfügbarkeitsgruppen ist der Systemmonitor, der das Leistungsobjekt „SQLServer:Datenbankreplikat“ verwendet. Die folgende Tabelle zeigt die relevanten Leistungsindikatoren und ihre Beschreibungen aus der Onlinedokumentation (https://msdn.microsoft.com/en-us/library/ff878356(v=sql.110).aspx):
Zählername | Beschreibung |
---|---|
Empfangene Dateibytes/Sek. | Menge der FILESTREAM-Daten, die das sekundäre Replikat für die sekundäre Datenbank in der letzten Sekunde empfangen hat. |
Empfangene Protokollbytes/Sek. | Anzahl der Protokolldatensätze, die das sekundäre Replikat für die Datenbank in der letzten Sekunde erhalten hat. |
Verbleibendes zum Rückgängigmachen protokollieren | Die verbleibende Log-Menge in Kilobyte, um die Undo-Phase abzuschließen. |
Sendewarteschlange protokollieren | Anzahl der Protokolldatensätze in den Protokolldateien der primären Datenbank in Kilobyte, die noch nicht an das sekundäre Replikat gesendet wurden. Dieser Wert wird vom primären Replikat an das sekundäre Replikat gesendet. Die Warteschlangengröße umfasst keine FILESTREAM-Dateien, die an einen sekundären gesendet werden. |
Wiederherstellungswarteschlange | Anzahl der Protokolldatensätze in den Protokolldateien des sekundären Replikats, die noch nicht wiederhergestellt wurden. |
Wiederholen blockiert/Sek. | Wie oft der Redo-Thread bei Sperren blockiert wird, die von Lesern der Datenbank gehalten werden. |
Redo-Byte verbleibend | Die verbleibende Log-Menge in Kilobyte, die noch einmal ausgeführt werden muss, um die Wiederherstellungsphase abzuschließen. |
Wiederhergestellte Bytes/Sek. | Anzahl der Protokolldatensätze, die in der letzten Sekunde in der sekundären Datenbank wiederholt wurden. |
Gesamtprotokoll muss rückgängig gemacht werden | Gesamtzahl an Protokoll in Kilobyte, die rückgängig gemacht werden müssen. |
Eine der Herausforderungen und Einschränkungen bei der Verwendung von Performance Monitor zum Überwachen der Umgebung besteht darin, dass das Objekt nur auf der Instanz von SQL Server gültig ist, die ein sekundäres Replikat hostet. Das bedeutet, dass Sie die Leistungsindikatoren von jedem sekundären Replikat in Systemmonitor hinzufügen müssen, um einen vollständigen Überblick darüber zu erhalten, was mit allen sekundären Datenbanken passiert, was sowohl das AG-Dashboard in Management Studio als auch die DMV-Abfrage für das primäre Replikat bereitstellen Informationen über alle sekundären Datenbanken an einem einzigen Ort.
Als Alternative zu den integrierten Funktionen zur Überwachung der Synchronisierung von Verfügbarkeitsgruppen können Sie auch Tools von Drittanbietern wie den SQL Sentry Performance Advisor nutzen, der die Überwachung von Verfügbarkeitsgruppen als Standardfunktion umfasst. Sie können mehr über diese Funktion in diesem Blogbeitrag von Greg Gonzalez lesen, der die Funktion erstmals in Version 7.5 des Produkts eingeführt hat.
Dashboard der Performance Advisor AG
Auf der Registerkarte Replicas in Performance Advisor kann jeder der sekundären Replica-Server erweitert werden, um die Datenbanken und ihre aktuellen Synchronisierungsdaten einfach anzuzeigen. Das Standardlayout der WSFC-Knoten-/Gruppenmatrix oben im Dashboard enthält auch Integritätsinformationen über den Status der Sendewarteschlange des primären Replikats, den Status der Redo-Warteschlange des sekundären Replikats und den Datenfluss zwischen den einzelnen Replikatservern. In diesem Beispiel können wir sehen, dass die Protokollsendewarteschlange auf dem primären Server derzeit eine große Datenmenge von SQL01 an SQL03 sendet, basierend auf der Breite der Linie zwischen den Servern, nachdem die Verbindungsprobleme zwischen SQL01 und SQL03 behoben wurden die Umgebung. Das Diagramm auf der rechten Seite zeigt die Rate, mit der Daten von SQL01 übertragen werden, zusammen mit der aktuellen Größe der Protokollsendewarteschlange, da dies das auf der linken Seite ausgewählte Replikat ist. Durch Klicken auf einen der anderen Replikatserver im WSFC-Knoten-/Gruppenmatrix-Layout wird das Diagramm ebenfalls so geändert, dass es den Leistungsmesswerten dieses spezifischen Replikats auf der rechten Seite entspricht.
Es gibt viele Möglichkeiten, die Leistung der Datensynchronisierung zwischen Replikatservern in einer Verfügbarkeitsgruppe in SQL Server zu überwachen. Das integrierte Verfügbarkeitsgruppen-Dashboard in Management Studio enthält eine Fülle von Informationen, auf die Sie leicht zugreifen können, sobald Sie wissen, wie Sie das Layout anpassen können, um die wichtigsten Informationen auf dem Dashboard anzuzeigen. Es ist auch möglich, die DMVs direkt vom primären Replikatserver zu verwenden, um die Leistung der Datensynchronisierung mit Transact-SQL zu überwachen, und Tools von Drittanbietern wie SQL Sentry umfassen auch die Überwachung der Datensynchronisierung. Der Leistungsmonitor kann zwar dieselben Informationen bereitstellen, aber die Tatsache, dass die Leistungsindikatoren nur vom sekundären Replikatserver verfügbar sind, macht es etwas aufwändiger, einen vollständigen Überblick über die gesamte Umgebung zu erhalten.