Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Wie behebe ich Verzögerungen im Lesereplikat von Amazon RDS für SQL Server?
Ich habe eine Amazon Relational Database Service (Amazon RDS) für Microsoft SQL Server-Instance mit Lesereplikat. Ich möchte die Replikatverzögerung in meiner Amazon RDS für SQL Server-Instance beheben.
Kurzbeschreibung
Amazon RDS für SQL Server Enterprise Edition unterstützt die Erstellung von Lesereplikaten in derselben AWS-Region und regionsübergreifend. Die Datenreplikation ist asynchron und verwendet die Always-On-Technologie, um Daten von einer Primär-Instance auf eine Replikat-Instance zu replizieren. RDS für SQL Server reduziert nicht automatisch die hohe Replikatverzögerung zwischen einer Quell-DB-Instance und ihren Lesereplikaten.
Lösung
Überprüfung deiner Ressourcenauslastung
Verwende Amazon CloudWatch Enhanced Monitoring und Performance Insights, um die Ressourcenauslastung auf den Primär- und Replikat-Instances ausführlich zu überprüfen.
Vergewissere dich, dass die CPU-Auslastung nicht gedrosselt wird. Wenn du einen spitzenlastfähigen Instance-Typ verwendest, stelle sicher, dass du über verfügbares CPU-Guthaben verfügst oder dass du den Modus Unlimited (Unbegrenzt) aktiviert hast.
Stelle sicher, dass genügend FreeableMemory vorhanden ist und ReadIOPS und WriteIOPS die bereitgestellten Kontingente erfüllen. Wenn du ein GP2-Volume verwendest, vergewissere dich, dass du über eine verfügbare Burst-Menge verfügst.
Prüfe, ob ReadThroughput und WriteThroughput die Kontingente für den Instance-Typ erreicht haben.
Hinweis: Ein Mangel an Ressourcen in der Replikat-Instance kann zu Replikatverzögerungen führen. Es hat sich bewährt, die Primär- und Replikat-Instances mit demselben Instance-Typ, Speichertyp und derselben IOPS-Anzahl zu erstellen. Du kannst das Lesereplikat auch nach oben oder unten skalieren, wenn die Nutzung im Vergleich zur primären Instance minimal ist.
Identifiziere den Zeitrahmen, in dem die Replikatverzögerung zugenommen hat, und ergreife dann die folgenden Maßnahmen:
- Überprüfe die Metriken WriteIOPS, WriteThroughput, NetworkReceiveThroughput und NetworkTrasmitThroughput auf der primären Instance. Ermittle, ob die Verzögerung durch Schreibaktivitäten verursacht wurde. Überprüfe dann dieselben Metriken im gleichen Zeitraum auf dem Lesereplikat.
- Prüfe, ob es auf der primären Instance Transaktionen mit langer Ausführungszeit gibt. Um den Status aktiver Transaktionen zu überprüfen, führe eine Abfrage aus, die dem folgenden Beispiel ähnelt:
SELECT * FROM sys.sysprocesses WHERE open_tran = 1;
Wartevorgänge und Deadlocks identifizieren
Prüfe, ob es auf der Replikat-Instance signifikante Sperrwartevorgänge oder Deadlocks gibt. Deadlocks treten zwischen Auswahl- und DDL/DML-Transaktionen auf und führen zu Verzögerungen bei der Anwendung von Transaktionsprotokollen aus der primären Instance.
Um zu überprüfen, ob eine Blockierung vorliegt, führe eine Abfrage aus, die dem folgenden Beispiel ähnelt:
SELECT * FROM sys.sysprocesses WHERE blocked > 0;
Nach Replikatverzögerungen suchen
Führe eine Abfrage auf der primären Instance aus, um nach Replikatverzögerungen und maximalen Replikatverzögerungen zu suchen.
Replikatverzögerung
Führe die folgende Abfrage aus:
SELECT AR.replica_server_name, DB_NAME (ARS.database_id) 'database_name', AR.availability_mode_desc, ARS.synchronization_health_desc, ARS.last_hardened_lsn, ARS.last_redone_lsn, ARS.secondary_lag_seconds, FROM sys.dm_hadr_database_replica_states ARS INNER JOIN sys.availability_replicas AR ON ARS.replica_id = AR.replica_id WHERE DB_NAME(ARS.database_id) = 'database_name' ORDER BY AR.replica_server_name;
Hinweis: Ersetze database_name durch deinen Datenbanknamen.
Stelle sicher, dass der Wert last_hardened_lsn auf dem Lesereplikat voranschreitet.
Maximale Replikatverzögerung
Bei SQL Server ist die ReplicaLag-Metrik die maximale Verzögerung von Datenbanken, die im Rückstand sind, in Sekunden. Wenn du beispielsweise zwei Datenbanken mit einer Verzögerung von 5 Sekunden und 10 Sekunden hast, beträgt ReplicaLag 10 Sekunden. Führe die folgende Abfrage auf der primären Instance aus, um die ReplicaLag-Metrik zu berechnen:
SELECT max(secondary_lag_seconds) max_lag FROM sys.dm_hadr_database_replica_states;
Datensynchronisierung und Instance-Zustand verwalten
Wenn du ein Lesereplikat erstellst, erstellt Amazon RDS einen Snapshot von der primären Instance und stellt den Snapshot dann wieder her, um eine Lesereplikat-Instance zu erstellen. Amazon RDS giebt Transaktionsprotokolle wieder, um die Daten mit der primären Instance zu synchronisieren. Nachdem du eine neue Instance erstellt hast, kommt es jedoch zu verzögertem Laden der Instance, was zu einer Verzögerung der Replikate führt. Dies ist ein erwartetes Verhalten. Verwende beim Erstellen des Lesereplikats den Volume-Typ io1 oder io2, um die Auswirkungen von verzögertem Laden zu reduzieren. Nachdem du das Replikat erstellt hast, kannst du es wieder in einen GP2- oder GP3-Volume-Typ konvertieren.
Führe Transaktionen stapelweise auf der primären Instance aus, um langandaurende Transaktionen zu vermeiden und dafür zu sorgen, dass die Größe der Transaktionsprotokolldatei klein bleibt. Starte die Replikat-Instance nur neu, wenn dies während einer langen Replikatverzögerung erforderlich ist. Andernfalls verzögert Amazon RDS die Wiedergabe von Transaktionsprotokollen, und die Datenbanken gehen möglicherweise in den Wiederherstellungs-Status über.
Da Protokolle von der primären Instance aus verarbeitet werden, kann es vorübergehend zu Replikatverzögerungen kommen, wenn du den Instance-Typ auf der Primär- oder Replikat-Instance änderst.
Wenn du den Speichertyp oder die Speichergröße änderst, kann es außerdem vorübergehend zu einer Replikatverzögerung kommen, bis die Speicheroptimierung abgeschlossen ist. Du kannst den Fortschritt der Speicheroptimierung nicht überwachen.
Wenn du weiterhin Replikatverzögerungen feststellst, überprüfe den Status der Benutzerdatenbanken auf der Replikat-Instance. Um Protokolle wiederzugeben, muss der Datenbankstatus Online lauten.
Hinweis:
- Amazon RDS bezieht neu erstellte Datenbanken erst in die Verzögerungsberechnung ein, wenn auf sie im Lesereplikat zugegriffen werden kann.
- ReplicaLag gibt -1 zurück, wenn Amazon RDS die Verzögerung nicht ermitteln kann, z. B. während der Replikateinrichtung oder wenn sich das Lesereplikat im Fehler-Status befindet.
Ähnliche Informationen
Arbeiten mit Lesereplikaten für Microsoft SQL Server in Amazon RDS

Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Monaten
- AWS OFFICIALAktualisiert vor 5 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 2 Jahren