Multi-AZ-DB-Instance-Bereitstellungen
Amazon RDS bietet Hochverfügbarkeit und Failover-Unterstützung für DB-Instances, die Multi-AZ-Bereitstellungen mit einer einzelnen Standby-DB-Instance verwenden. Diese Art der Bereitstellung wird als Multi-AZ-DB-Instance-Bereitstellung bezeichnet. Amazon RDS verwendet mehrere verschiedene Technologien, um Failover-Unterstützung bereitzustellen. Multi-AZ-Bereitstellungen für DB-Instances von MariaDB, MySQL, Oracle, PostgreSQL und RDS Custom für SQL Server verwenden die Failover-Technologie von Amazon. DB-Instances von Microsoft SQL Server verwenden die SQL Server-Datenbankspiegelung oder Always On-Verfügbarkeitsgruppen. Informationen zur Unterstützung von SQL Server-Versionen für Multi-AZ finden Sie unter Multi-AZ-Bereitstellungen für Amazon RDS für Microsoft SQL Server. Informationen zum Arbeiten mit RDS Custom für SQL Server für Multi-AZ finden Sie unter Verwalten einer Multi-AZ-Bereitstellung für RDS Custom für SQL Server.
Bei einer Multi-AZ-Bereitstellung einer DB-Instance sorgt Amazon RDS für eine automatische Bereitstellung und Verwaltung eines synchronen Standby-Replikats in einer anderen Availability Zone. Die primäre DB-Instance wird synchron über Availability Zones hinweg auf ein Standby-Replikat repliziert, um Datenredundanz bereitzustellen und Latenzspitzen während Systemsicherungen zu minimieren. Wenn Sie eine DB-Instance mit hoher Verfügbarkeit ausführen, kann dies die Verfügbarkeit bei geplanten Systemwartungen verbessern. Sie kann auch Ihre Datenbanken bei Ausfällen der DB-Instance und bei Nichtverfügbarkeit von Availability Zones schützen. Weitere Informationen über Availability Zones finden Sie unter Regionen, Availability Zones und Local Zones.
Anmerkung
Die Option für hohe Verfügbarkeit ist keine Skalierungslösung für schreibgeschützte Szenarien. Sie können kein Standby-Replikat verwenden, um Leseverkehr bereitzustellen. Um schreibgeschützten Datenverkehr bereitzustellen, verwenden Sie stattdessen einen Multi-AZ-DB-Cluster oder ein Lesereplikat. Weitere Informationen zu Multi-AZ-DB-Clustern finden Sie unter Multi-AZ-DB-Cluster-Bereitstellungen. Weitere Informationen über Lesereplikate finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.

Sie können über die RDS-Konsole eine Multi-AZ-DB-Instance-Bereitstellung erstellen, indem Sie ganz einfach bei der Erstellung einer DB-Instance die Option „Multi-AZ“ angeben. Sie können über die Konsole bestehende DB-Instances in Multi-AZ-Bereitstellungen für DB-Instances umwandeln, indem Sie die DB-Instance ändern und die Option „Multi-AZ“ angeben. Sie können auch eine Multi-AZ-DB-Instance-Bereitstellung mit der AWS CLI oder der Amazon-RDS-API angeben. Verwenden Sie den CLI-Befehl create-db-instance oder modify-db-instance oder die API-Operation CreateDBInstance oder ModifyDBInstance.
In der RDS-Konsole wird die Availability Zone des Standby-Replikats angezeigt (auch als sekundäre AZ bezeichnet). Sie können auch den CLI-Befehl describe-db-instances oder die API-Operation DescribeDBInstances verwenden, um die sekundäre AZ zu suchen.
DB-Instances, die Multi-AZ-DB-Instance-Bereitstellungen verwenden, können im Vergleich zu einer Single-AZ-Bereitstellung eine höhere Schreib- und Commit-Latenz aufweisen. Dies kann aufgrund der auftretenden synchronen Datenreplikation geschehen. Die Latenz kann sich entsprechend ändern, wenn Ihre Bereitstellung ein Failover auf ein Standby-Replikat durchführt, obwohl AWS selbst mit einer Netzwerkanbindung zwischen Availability Zones mit einer geringen Latenz konzipiert ist. Für Produktionsworkloads empfehlen wir die Verwendung von bereitgestellten IOPS (Eingabe-/Ausgabevorgänge pro Sekunde) für eine schnelle, konsistente Leistung. Weitere Informationen zu DB-Instance-Klassen finden Sie unter DB-Instance-Klassen.
Ändern einer DB-Instance zu einer Multi-AZ-DB-Instance-Bereitstellung
Wenn Sie eine DB-Instance in einer Single-AZ-Bereitstellung haben und diese in eine Multi-AZ-Bereitstellung für Instances ändern (für andere Engines als Amazon Aurora), führt Amazon RDS mehrere Aktionen aus:
-
Erstellt einen Snapshot der Amazon Elastic Block Store (EBS) -Volumes der primären DB-Instance.
-
Erstellt neue Volumes für das Standby-Replikat aus dem Snapshot. Diese Volumes werden im Hintergrund initialisiert, und die maximale Volume-Leistung wird erreicht, nachdem die Daten vollständig initialisiert wurden.
-
Aktiviert die synchrone Replikation auf Blockebene zwischen den Volumes der primären und Standby-Replikate.
Wichtig
Die Verwendung eines Snapshots zur Erstellung der Standby-Instance vermeidet Ausfallzeiten bei der Konvertierung von Single-AZ zu Multi-AZ, kann jedoch während und nach der Konvertierung zu Multi-AZ zu Leistungseinbußen führen. Diese Auswirkung kann bei Workloads erheblich sein, die empfindlich auf Schreiblatenz reagieren.
Diese Funktion ermöglicht zwar die schnelle Wiederherstellung großer Volumes aus Snapshots, kann jedoch aufgrund der synchronen Replikation zu einer erheblichen Erhöhung der Latenzzeit von E/A-Operationen führen. Diese Latenz kann sich auf die Leistung Ihrer Datenbank auswirken. Als Bewährte Methode empfehlen wir dringend, keine Multi-AZ-Konvertierung auf einer Produktions-DB-Instance durchzuführen.
Erstellen Sie ein Lesereplikat und aktivieren Sie Backups auf dem Lesereplikat, um Leistungseinbußen auf die DB-Instance zu vermeiden, die derzeit die sensible Workload bedient. Konvertieren Sie das Read Replica in Multi-AZ und führen Sie Abfragen aus, die die Daten in die Volumes des Read Replica laden (auf beiden AZs). Stufen Sie dann das Lesereplikat zur primären DB-Instance hoch. Weitere Informationen finden Sie unter Arbeiten mit DB-Instance-Lesereplikaten.
Es gibt zwei Möglichkeiten, eine DB-Instance in eine Multi-AZ-DB-Instance-Bereitstellung zu ändern:
Themen
Sie können sie mit der RDS-Konsole in eine Multi-AZ-DB-Instance-Bereitstellung konvertieren.
Sie können die RDS-Konsole verwenden, um eine DB-Instance in eine Multi-AZ-DB-Instance-Bereitstellung zu konvertieren.
Sie können die Konvertierung nur mit der Konsole abschließen. Folgen Sie den Anweisungen unter Ändern einer DB-Instance zu einer Multi-AZ-DB-Instance-Bereitstellung, wenn Sie die AWS CLI oder RDS-API verwenden möchten.
So konvertieren Sie die DB-Instance mit der RDS-Konsole in eine Multi-AZ-DB-Instance-Bereitstellung
Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-RDS-Konsole unter https://console.aws.amazon.com/rds/
. -
Wählen Sie im Navigationsbereich Databases (Datenbanken) und dann die DB-Instance, die Sie ändern möchten.
-
Wählen Sie unter Actions (Aktionen) die Option Convert to Multi-AZ deployment In Multi-AZ-Bereitstellung konvertieren aus.
-
Damit Änderungen sofort übernommen werden, wählen Sie die Option Apply Immediately (Sofort anwenden) auf der Bestätigungsseite aus. Die Auswahl dieser Option verursacht keine Ausfallzeiten, kann jedoch zur Beeinträchtigung der Leistung führen. Sie können die Aktualisierung auch im nächsten Wartungsfenster übernehmen. Weitere Informationen finden Sie unter Verwenden der Einstellung „Sofort anwenden“.
-
Wählen Sie Convert to Multi-AZ (In Multi-AZ konvertieren) aus.
Ändern einer DB-Instance zu einer Multi-AZ-DB-Instance-Bereitstellung
Sie können eine DB-Instance auf folgende Weise in eine Multi-AZ-DB-Instance-Bereitstellung ändern:
-
Ändern Sie die DB-Instance mithilfe der RDS-Konsole und legen Sie die Einstellung Multi-AZ deployment (Multi-AZ-Bereitstellung) auf Yes (Ja) fest.
-
Rufen Sie mit der AWS CLI den Befehl modify-db-instance auf und legen Sie die
--multi-az
-Option fest. -
Rufen Sie mit der RDS-API die Operation ModifyDBInstance auf und legen Sie den
MultiAZ
-Parameter auftrue
fest.
Informationen zum Ändern einer DB-Instance finden Sie unter Ändern einer Amazon RDS-DB-Instance. Nach Abschluss der Änderungen löst Amazon RDS ein Ereignis (RDS-EVENT-0025) aus, das anzeigt, dass der Prozess abgeschlossen ist. Sie können Amazon-RDS-Ereignisse überwachen. Weitere Informationen über -Ereignisse finden Sie unter Arbeiten mit Amazon-RDS-Ereignisbenachrichtigungen.
Failover-Prozess bei Amazon RDS
Wenn ein geplanter oder ungeplanter Ausfall Ihrer DB-Instance durch einen Infrastrukturdefekt resultiert, wechselt Amazon RDS automatisch zu einem Standby-Replikat in einer anderen Availability Zone, wenn Sie Multi-AZ aktiviert haben. Die Dauer, bis der Failover-Prozess für die Instance abgeschlossen ist, hängt von der Datenbankaktivität sowie von anderen Bedingungen zu dem Zeitpunkt ab, an dem die primäre DB-Instance ausgefallen ist. Der Failover-Prozess dauert normalerweise 60–120 Sekunden. Diese Failover-Dauer kann sich verlängern, wenn umfangreiche Transaktionen oder zeitintensive Wiederherstellungsprozesse durchgeführt werden. Wenn der eigentliche Failover-Prozess abgeschlossen ist, kann es noch einmal etwas dauern, bis die RDS-Konsole die Daten für die neue Availability Zone geladen hat.
Anmerkung
Sie können ein Failover manuell erzwingen, wenn Sie eine DB-Instance neu starten. Weitere Informationen finden Sie unter Neustarten einer DB-Instance.
Amazon RDS führt den Failover-Prozess automatisch durch, sodass der Datenbankbetrieb so schnell wie möglich und ohne Verwaltungseingriff wieder aufgenommen werden kann. Die primäre DB-Instance schaltet automatisch auf das Standby-Replikat um, wenn eine der in der folgenden Tabelle beschriebenen Bedingungen eintritt: Sie können diese Failover-Gründe im Ereignisprotokoll einsehen.
Failover-Grund | Beschreibung |
---|---|
Das Betriebssystem, das der RDS-Datenbank-Instance zugrunde liegt, wird offline gepatcht. |
Ein Failover wurde während des Wartungsfensters für einen Betriebssystem-Patch oder ein Sicherheitsupdate ausgelöst. Weitere Informationen finden Sie unter Warten einer DB-Instance. |
Der primäre Host der RDS-Multi-AZ-Instance ist fehlerhaft. |
Die Multi-AZ-DB-Instance-Bereitstellung hat eine beeinträchtigte primäre DB-Instance erkannt und ein Failover eingeleitet. |
Der primäre Host der RDS-Multi-AZ-Instance ist aufgrund des Verlusts der Netzwerkverbindung nicht erreichbar. |
Die RDS-Überwachung hat einen Fehler bei der Erreichbarkeit des Netzwerks für die primäre DB-Instance festgestellt und ein Failover ausgelöst. |
Die RDS-Instance wurde vom Kunden geändert. |
Eine Änderung der RDS-DB-Instance hat ein Failover ausgelöst. Weitere Informationen finden Sie unter Ändern einer Amazon RDS-DB-Instance. |
Die primäre RDS-Multi-AZ-Instance ist beschäftigt und reagiert nicht. |
Die primäre DB-Instance reagiert nicht. Wir empfehlen Folgendes:
Weitere Informationen zu diesen Empfehlungen finden Sie unter Übersicht über die Überwachung von Metriken in Amazon RDS und Bewährte Methoden für Amazon RDS. |
Das Speichervolumen, das dem primären Host der RDS-Multi-AZ-Instance zugrunde liegt, ist ausgefallen. |
Die Multi-AZ-DB-Instance-Bereitstellung hat ein Speicherproblem der primären DB-Instance erkannt und ein Failover eingeleitet. |
Der Benutzer hat ein Failover der DB-Instance angefordert. |
Sie haben die DB-Instance neu gestartet und Neustart mit Failover gewählt. Weitere Informationen finden Sie unter Neustarten einer DB-Instance. |
Um festzustellen, ob Ihre Multi-AZ-DB-Instance erfolgreich ausgeführt wurde, können Sie Folgendes tun:
Sie können Benachrichtigungen per E-Mail oder per SMS für DB-Ereignisse abonnieren, bei denen ein Failover ausgelöst wird. Weitere Informationen über -Ereignisse finden Sie unter Arbeiten mit Amazon-RDS-Ereignisbenachrichtigungen.
Sie können Ihre DB-Ereignisse über die RDS-Konsole oder mittels API-Operationen anzeigen.
Zeigen Sie den aktuellen Status Ihrer Multi-AZ-DB-Instance-Bereitstellung mithilfe der RDS-Konsole oder API-Vorgänge an.
Informationen zur empfohlenen Vorgehensweise bei Failover-Situationen, zur Verringerung der Wiederherstellungsdauer und zu bewährten Methoden für Amazon RDS finden Sie unter Bewährte Methoden für Amazon RDS.
Festlegen des JVM-TTL-Werts für DNS-Name-Lookups
Bei dem Failover-Prozess wird der DNS-Datensatz (Domain Name System) der DB-Instance so geändert, dass er auf die Standby-DB-Instance verweist. Als Ergebnis müssen alle bestehenden Verbindungen zu Ihrer DB-Instance neu hergestellt werden. In einer JVM-Umgebung (Java Virtual Machine) müssen Sie aufgrund der besonderen Funktionsweise der Zwischenspeicherung von DNS-Informationen in Java möglicherweise die JVM-Einstellungen rekonfigurieren.
Die JVM speichert DNS-Name-Lookups zwischen. Wenn die JVM einen Hostnamen zu einer IP-Adresse auflöst, speichert sie die IP-Adresse für einen bestimmten Zeitraum zwischen. Diese Zeit ist als Time-to-Live (TTL, Lebensdauer) bekannt.
Da AWS-Ressourcen DNS-Namenseinträge nutzen, die sich gelegentlich ändern, empfehlen wir, dass Sie Ihre JVM mit einem TTL-Wert von maximal 60 Sekunden konfigurieren. Auf diese Weise wird bei Änderung der IP-Adresse einer Ressource sichergestellt, dass Ihre Anwendung die neue IP-Adresse der Ressource durch erneute Abfrage des DNS abrufen und nutzen kann.
Bei einigen Java-Konfigurationen ist die JVM-Standard-TTL so festgelegt, dass DNS-Einträge nie aktualisiert werden, bis die JVM neu gestartet wird. Ändert sich die IP-Adresse einer AWS-Ressource also, während Ihre Anwendung läuft, kann die Anwendung die Ressource erst wieder nutzen, nachdem Sie die JVM manuell neu starten und die zwischengespeicherten IP-Informationen aktualisiert wurden. In diesem Fall ist es wichtig, die TTL der JVM so einzustellen, dass sie die zwischengespeicherten IP-Daten von Zeit zu Zeit aktualisiert.
Sie erhalten die JVM-Standard-TTL, indem Sie den Eigenschaftswert networkaddress.cache.ttl
String ttl = java.security.Security.getProperty("networkaddress.cache.ttl");
Anmerkung
Die Standard-TTL kann je nach Version Ihrer JVM und abhängig davon, ob ein Sicherheits-Manager installiert ist, unterschiedlich sein. Viele JVMs bieten eine Standard-TTL von weniger als 60 Sekunden. Wenn Sie eine solche JVM und keinen Sicherheits-Manager nutzen, können Sie den Rest dieses Themas ignorieren. Weitere Informationen zu Sicherheits-Managern in Oracle finden Sie unter The Security Manager
Um die TTL der JVM zu ändern, legen Sie den Eigenschaftswert networkaddress.cache.ttl
fest. Nutzen Sie dazu eine der folgenden Methoden je nach Ihrem Bedarf:
-
Legen Sie in der
networkaddress.cache.ttl
-Datei$JAVA_HOME/jre/lib/security/java.security
fest, um den Eigenschaftswert global für alle Anwendungen festzulegen, die die JVM verwenden.networkaddress.cache.ttl=60
-
Um die Eigenschaft nur für Ihre Anwendung lokal festzulegen, legen Sie
networkaddress.cache.ttl
im Initialisierungscode Ihrer Anwendung fest, bevor Netzwerkverbindungen hergestellt werden.java.security.Security.setProperty("networkaddress.cache.ttl" , "60");