Warum wurde meine Amazon-RDS-DB-Instance neu gestartet, wiederhergestellt oder ein Failover durchgeführt?

Zuletzt aktualisiert: 19.07.2022

Ich möchte die Ursache für den Neustart, die Wiederherstellung oder das Failover meiner DB-Instance im Amazon Relational Database Service (Amazon RDS) ermitteln.

Kurzbeschreibung

Die Amazon-RDS-Datenbank-Instance führt unter den folgenden Bedingungen automatisch einen Neustart durch:

  • Es gibt einen Verfügbarkeitsverlust in der primären Availability Zone oder eine übermäßige Workload aufgrund von Leistungsengpässen und Ressourcenkonflikten.
  • Bei der primären Instance liegt ein zugrunde liegendes Infrastrukturproblem vor, z. B. Verlust der Netzwerkkonnektivität zur primären Instance, Recheneinheitenproblem auf der primären Instance oder Speicherproblem auf der primären Instance.
  • Der DB-Instance-Klassentyp wird im Rahmen der vertikalen Skalierung der DB-Instance geändert.
  • Der zugrunde liegende Host der RDS-DB-Instance wird während eines bestimmten Wartungsfensters einem Software-Patch unterzogen. Weitere Informationen findest du unter Warten einer DB-Instance und Upgrade der Engine-Version für eine DB-Instance.
  • Du hast einen manuellen Reboot der DB Instance mit den Optionen Reboot oder Reboot with failover initiiert.

Wenn die DB-Instance potenzielle Probleme aufweist und nicht auf RDS-Zustandsprüfungen reagiert, initiiert RDS automatisch eine Single-AZ-Wiederherstellung für die Single-AZ-Bereitstellung und ein Multi-AZ-Failover für die Multi-AZ-Bereitstellung. Anschließend wird die DB-Instance neu gestartet, sodass du den Datenbankbetrieb so schnell wie möglich ohne administrativen Eingriff wieder aufnehmen kannst.

Lösung

Überprüfe die folgenden Protokolle und Metriken für deine RDS-DB-Instance, um die Ursache des Ausfalls zu ermitteln.

Amazon-RDS-Ereignisse

Um die Ursache eines ungeplanten Ausfalls in deiner Instance zu ermitteln, zeigst du alle Amazon-RDS-Ereignisse der letzten 24 Stunden an. Alle Ereignisse werden standardmäßig in der UTC/GMT-Zeit registriert. Um Ereignisse länger zu speichern, sende die Amazon-RDS-Ereignisse an Amazon CloudWatch Events. Weitere Informationen findest du unter Erstellen einer Regel, die bei einem Amazon-RDS-Ereignis ausgelöst wird. Wenn deine Instance neu gestartet wird, wird in den RDS-Ereignisbenachrichtigungen eine der folgenden Meldungen angezeigt:

  • Die RDS-Instance wurde vom Kunden geändert: Diese RDS-Ereignismeldung zeigt an, dass das Failover durch eine Änderung der RDS-Instance initiiert wurde.
  • Änderung wird auf Datenbank-Instance-Klasse angewendet: Diese RDS-Ereignismeldung zeigt an, dass der DB-Instance-Klassentyp geändert wurde.
    • Single-AZ-Bereitstellungen sind während dieses Skalierungsvorgangs für einige Minuten nicht verfügbar.
    • Multi-AZ-Bereitstellungen sind während der Zeit, die für das Failover der Instance benötigt wird, nicht verfügbar. Dies dauert normalerweise etwa 60 Sekunden. Dies liegt daran, dass die Standby-Datenbank aktualisiert wird, bevor bei der neu dimensionierten Datenbank ein Failover auftritt. Anschließend wird deine Datenbank neu gestartet, und die Engine führt eine Wiederherstellung durch, um sicherzustellen, dass deine Datenbank in einem konsistenten Zustand bleibt.
  • Der Benutzer hat ein Failover der DB-Instance angefordert: Diese Meldung zeigt an, dass du einen manuellen Neustart der DB-Instance mit der Option Reboot oder Reboot with failover initiiert hast.
  • Der primäre Host der RDS-Multi-AZ-Instance ist fehlerhaft: Dieser Grund weist auf ein vorübergehendes zugrunde liegendes Hardwareproblem hin, das zum Verlust der Kommunikation mit der primären Instance geführt hat. Dieses Problem könnte die Instance fehlerhaft gemacht haben, da das RDS-Überwachungssystem nicht mit der RDS-Instance kommunizieren konnte, um die Zustandsprüfungen durchzuführen.
  • Der primäre Host der RDS-Multi-AZ-Instance ist aufgrund eines Verlusts der Netzwerkkonnektivität nicht erreichbar: Dieser Grund weist darauf hin, dass das Multi-AZ-Failover und der Neustart der Datenbank-Instance durch ein vorübergehendes Netzwerkproblem verursacht wurden, das sich auf den primären Host deiner Multi-AZ-Bereitstellung auswirkte. Das interne Überwachungssystem hat dieses Problem erkannt und ein Failover eingeleitet.
  • Die primäre RDS-Multi-AZ-Instance ist ausgelastet und reagiert nicht, die Aktivierung der Multi-AZ-Instance wurde gestartet oder die Aktivierung der Multi-AZ-Instance wurde abgeschlossen: Das Ereignisprotokoll zeigt diese Meldungen in den folgenden Situationen an:
    • Die primäre DB-Instance reagiert nicht.
    • Ein Speicher-Crunch nach einem übermäßigen Speicherverbrauch in der Datenbank verhinderte, dass das RDS-Überwachungssystem den zugrunde liegenden Host kontaktierte. Daher wird die Datenbank als proaktive Maßnahme von unserem Überwachungssystem neu gestartet.
    • Bei der DB-Instance traten zeitweise Netzwerkprobleme mit dem zugrunde liegenden Host auf.
    • Die Instance hat eine Datenbanklast erfahren. In diesem Fall stellst du möglicherweise Spitzen bei den CloudWatch-Metriken CPUUtilization, DatabaseConnections, IOPS-Metriken und Durchsatzdetails fest. Möglicherweise stellst du auch eine Erschöpfung von Freeablememory fest.
  • Datenbank-Instance gepatcht: Diese Meldung zeigt an, dass die DB-Instance während eines Wartungsfensters einem Upgrade auf eine Nebenversion unterzogen wurde, weil die Einstellung Autom. Nebenversion-Upgrade auf der Instance aktiviert ist.

CloudWatch-Metriken

Zeige die CloudWatch-Metriken für deine Amazon-RDS-Instance an, um zu überprüfen, ob das Datenbanklastproblem den Ausfall verursacht hat. Weitere Informationen findest du unter Überwachen von Amazon RDS-Metriken mit Amazon CloudWatch. Überprüfe, ob die folgenden Metriken, die die Verfügbarkeit und den Zustandsstatus deiner RDS-Instance angeben, auf Spitzen hinweisen:

  • DatabaseConnections
  • CPUUtilization
  • FreeableMemory
  • WriteIOPS
  • ReadIOPS
  • ReadThroughput
  • WriteThroughput
  • DiskQueueDepth

Enhanced Monitoring

Amazon RDS liefert Metriken aus Enhanced Monitoring in dein Amazon-CloudWatch-Logs-Konto. Dadurch werden in Echtzeit Metriken für das Betriebssystem bereitgestellt, auf dem deine DB-Instance ausgeführt wird. Du kannst alle Systemmetriken und Prozessinformationen für deine DB-Instances auf der Konsole anzeigen.

Sie können die Granularität für die erweiterte Überwachungsfunktion auf 1, 5, 10, 15, 30 oder 60 einstellen.

Informationen zum Aktivieren von Enhanced Monitoring für deine Amazon-RDS-Instance findest du unter Einrichten und Aktivieren von Enhanced Monitoring.

Performance Insights

Das Performance Insights Dashboard enthält Informationen zur Datenbankleistung, die Ihnen bei der Analyse und Behebung von Leistungsproblemen helfen können. Du kannst auch Abfragen identifizieren und Ereignisse abwarten, die übermäßige Ressourcen auf deiner DB-Instance verbrauchen. Performance Insights sammelt Daten auf Datenbankebene und zeigt die Daten im Performance Insights Dashboard an. Weitere Informationen findest du unter Überwachung der DB-Last mit Performance Insights auf Amazon RDS. Wenn ein Anstieg des Ressourcenverbrauchs von der Anwendungsseite aus generiert wird, verwende die Support-SQL-ID aus deinem Performance Insights Dashboard und ordne sie der entsprechenden Abfrage zu. Es empfiehlt sich, anhand dieser Informationen die Leistung der Abfrage zu optimieren und diene Workload unter Anleitung deines DBA zu optimieren:

  1. Öffne die Amazon-RDS-Konsole.
  2. Wähle im Navigationsbereich Performance Insights aus.
  3. Wähle auf der Seite Performance Insights deine DB-Instance aus. Du kannst das Performance Insights Dashboard für diese DB-Instance anzeigen.
  4. Wähle den Zeitraum aus, in dem das Problem aufgetreten ist.
  5. Wähle die Registerkarte Top SQL aus.
  6. Wähle das Einstellungssymbol und aktiviere dann die Support-ID.
  7. Wähle Save (Speichern) aus.

RDS-Datenbankprotokolle

Um die Ursache des Ausfalls für diene Amazon RDS-DB-Instance zu beheben, kannst du Datenbankprotokolldateien über die-Amazon RDS-Konsole oder Amazon-RDS-API-Vorgänge anzeigen, herunterladen oder überwachen. Du kannst auch die Datenbankprotokolldateien abfragen, die in Datenbanktabellen geladen werden. Weitere Informationen findest du unter Überwachen von Amazon-RDS-Protokolldateien.

Beachtest du beim Umgang mit Ausfällen von RDS-Instances die folgenden Best Practices:

  • Aktiviere die Multi-AZ-Bereitstellung auf deiner Instance, um Ausfallzeiten zu reduzieren. Bei einer Multi-AZ-Bereitstellung wird von RDS automatisch ein synchrones Standby-Replikat in einer anderen Availability Zone oder in zwei lesbaren Standbys bereitgestellt und verwaltet. Weitere Informationen findest du unter Amazon RDS Multi-AZ.
  • Passe das Wartungsfenster der DB-Instance nach deinen Wünschen an. Die DB-Instance ist während dieser Zeit nur dann nicht verfügbar, wenn die Systemänderungen, wie z. B. eine Änderung der DB-Instance-Klasse, angewendet werden und einen Ausfall erfordern, und nur für die minimale Zeit, die für die Durchführung der erforderlichen Änderungen erforderlich ist. Weitere Informationen findest du unter Warten einer DB-Instance. Wenn du nicht möchtest, dass deine Instances automatische Upgrades auf Nebenversionen durchlaufen, kannst du diese Option deaktivieren. Weitere Informationen findest du unter Automatisches Upgraden der Engine-Unterversion.
  • Stelle sicher, dass deiner Datenbank genügend Ressourcen zugewiesen sind, um Abfragen auszuführen. Bei Amazon RDS hängt die Menge der zugewiesenen Ressourcen vom Instance-Typ ab. Außerdem können bestimmte Abfragen, wie z. B. gespeicherte Prozeduren, eine unbegrenzte Menge an Speicher beanspruchen. Wenn die Instance aufgrund fehlender Ressourcen häufig neu gestartet wird, solltest du daher eine Skalierung deiner Datenbank-Instance-Klasse in Erwägung ziehen, um mit den steigenden Anforderungen deiner Anwendungen Schritt zu halten.
  • Um eine Instance-Drosselung zu vermeiden, konfiguriere Amazon CloudWatch-Alarme auf RDS-Schlüsselmetriken, die die Verfügbarkeit und den Zustandsstatus deiner RDS-Instances angeben. Du kannst beispielsweise einen CloudWatch-Alarm für die Metrik FreeableMemory festlegen, sodass du eine Benachrichtigung erhältst, wenn der verfügbare Speicher 95 % erreicht. Es empfiehlt sich, mindestens 5 % des Instance-Speichers frei zu lassen. Weitere Informationen findest du unter Wie kann ich CloudWatch-Protokolle für die Enhanced Monitoring filtern, um automatisierte benutzerdefinierte Metriken für Amazon RDS zu generieren?
  • Abonniere Amazon-RDS-Ereignisbenachrichtigungen, um bei jedem Failover auf deiner RDS-Instance benachrichtigt zu werden. Weitere Informationen findest du unter Wie erstelle ich ein Amazon-RDS-Ereignis-Abonnement?
  • Stelle zur Optimierung der Datenbankleistung sicher, dass deine Abfragen ordnungsgemäß optimiert sind. Andernfalls können Leistungsprobleme und längere Wartezeiten auftreten.
  • Informationen zur Fehlerbehebung bei jeder Art von Auslastung in Bezug auf CPU, Arbeitsspeicher oder anderer Ressourcenknappheit findest du unter Wie kann ich Probleme mit hoher CPU-Auslastung für Amazon RDS oder Amazon Aurora PostgreSQL beheben?