Auf dieser Seite werden die hohe Verfügbarkeit und die Tools beschrieben, die wir empfehlen. Mit diesen Tools können Sie auch die hohe Verfügbarkeit für Cluster einrichten, für die die transparente Datenverschlüsselung (Transparent Data Encryption, TDE) aktiviert ist.
Informationen zur Datenresilienz
Datenresilienz kann in Bezug auf Verfügbarkeit, Zeit bis zur Wiederherstellung des Dienstes und Datenverlust betrachtet werden. Die Verfügbarkeit wird in der Regel in Bezug auf die Betriebszeit gemessen und als Prozentsatz der Zeit ausgedrückt, in der die Datenbank verfügbar ist. Um beispielsweise eine Verfügbarkeit von 99,99% zu erreichen, darf Ihre Datenbank nicht länger als 52,6 Minuten pro Jahr oder 4,38 Minuten pro Monat ausfallen. Die Zeit, die für die Wiederherstellung des Dienstes nach einem Ausfall benötigt wird, wird als Recovery Time Objective (RTO) bezeichnet. Die Menge des akzeptablen Datenverlusts aufgrund eines Ausfalls wird als Recovery Point Objective (RPO) bezeichnet und als die Zeit ausgedrückt, für die Transaktionen verloren gehen. Ein RPO von 10 Minuten bedeutet beispielsweise, dass Sie im Falle eines Fehlers Daten im Wert von bis zu 10 Minuten verlieren könnten.
Es ist üblich, ein Verfügbarkeitsziel oder Service Level Objective (SLO) zusammen mit Zielen für RTO und RPO festzulegen. Für eine bestimmte Arbeitslast können Sie beispielsweise das SLO auf 99,99 % festlegen und außerdem ein RPO von 0, keinen Datenverlust bei einem Fehler und ein RTO von 30 Sekunden festlegen. Für eine andere Arbeitslast können Sie das SLO auf 99,9%, das RPO auf 5 Minuten und das RTO auf 10 Minuten festlegen.
Sie können eine grundlegende Datenbankresilienz mit Datenbanksicherungen implementieren. AlloyDB Omni unterstützt Sicherungen mit pgBackRest und archiviert auch die Write Ahead Log-Dateien (WAL) der Datenbank, um Datenverluste zu minimieren. Wenn Ihre primäre Datenbank ausfällt, kann sie mit diesem Ansatz aus einer Sicherung mit einem RPO von wenigen Minuten und einem RTO von wenigen Minuten bis Stunden wiederhergestellt werden, je nach Größe der Datenbank.
Für strengere RPO- und RTO-Anforderungen können Sie AlloyDB Omni in einer Hochverfügbarkeitskonfiguration mit Patronieinrichten. In dieser Architektur gibt es eine primäre Datenbank und zwei Standby- oder Replikatdatenbanken. Sie können AlloyDB Omni so konfigurieren, dass die Standard-PostgreSQL-Streamingreplikation verwendet wird, um sicherzustellen, dass jede Transaktion, die auf der primären Datenbank ausgeführt wird, synchron in beide Standby-Datenbanken repliziert wird. Dies bietet ein RPO von null und ein RTO von weniger als 60 Sekunden für die meisten Fehlerszenarien.
Je nach Clusterkonfiguration kann sich die synchrone Replikation auf die Antwortzeit für Transaktionen auswirken. Sie können auch einen geringen Datenverlust riskieren. Sie können beispielsweise ein RPO ungleich null haben, um die Transaktionslatenz zu verringern, indem Sie die hohe Verfügbarkeit mit asynchroner anstelle von synchroner Replikation implementieren. Aufgrund der potenziellen Auswirkungen der synchronen Replikation auf die Transaktionslatenz werden Hochverfügbarkeitsarchitekturen fast immer in einem einzelnen Rechenzentrum oder zwischen Rechenzentren implementiert, die nah beieinander liegen (Entfernung von einigen Kilometern / < 10 Millisekunden Latenz). In dieser Dokumentation wird jedoch standardmäßig die synchrone Replikation verwendet.
Für die Notfallwiederherstellung, die den Schutz vor dem Verlust eines Rechenzentrums oder einer Region mit mehreren Rechenzentren in der Nähe umfasst, kann AlloyDB Omni mit asynchroner Streamingreplikation von der primären Region zu einer sekundären Region konfiguriert werden, die in der Regel Hunderte oder Tausende von Kilometern entfernt ist oder eine Latenz von 10 bis 100 Millisekunden aufweist. In dieser Konfiguration ist die primäre Region mit synchroner Streamingreplikation zwischen der primären und der Standby-Datenbank innerhalb der Region konfiguriert. Die asynchrone Streamingreplikation ist von der primären Region zu einer oder mehreren sekundären Regionen konfiguriert. AlloyDB Omni kann in der sekundären Region mit mehreren Datenbankinstanzen konfiguriert werden, um sicherzustellen, dass sie sofort nach einem Failover von der primären Region geschützt ist.
Funktionsweise der hohen Verfügbarkeit
Die spezifischen Techniken und Tools, die zum Implementieren der hohen Verfügbarkeit für Datenbanken verwendet werden, können je nach Datenbankmanagementsystem variieren. Im Folgenden sind einige der Techniken und Tools aufgeführt, die in der Regel bei der Implementierung der hohen Verfügbarkeit für Datenbanken verwendet werden. Sie können je nach Datenbankmanagementsystem variieren:
Redundanz: Durch die Replikation Ihrer Datenbank auf mehreren Servern oder in mehreren geografischen Regionen stehen Failover-Optionen zur Verfügung, wenn eine primäre Instanz ausfällt.
Automatisches Failover: Ein Mechanismus zum Erkennen von Fehlern und zum nahtlosen Wechsel zu einem fehlerfreien Replikat, um Ausfallzeiten zu minimieren. Abfragen werden so weitergeleitet, dass Anwendungsanfragen den neuen primären Knoten erreichen.
Datenkontinuität: Es werden Sicherheitsmaßnahmen implementiert, um die Datenintegrität bei Fehlern zu schützen. Dazu gehören Replikationstechniken und Prüfungen der Datenkonsistenz.
Clustering: Beim Clustering werden mehrere Datenbankserver gruppiert, um als ein einziges System zusammenzuarbeiten. Auf diese Weise sind alle Knoten im Cluster aktiv und verarbeiten Anfragen, was für Load Balancing und Redundanz sorgt.
Fallback: Methoden, um auf die ursprüngliche Architektur zurückzugreifen. Dabei werden der primäre Knoten und der Replikatknoten mit ihrer ursprünglichen Kapazität vor dem Failover verwendet.
Load Balancing: Durch die Verteilung von Datenbankanfragen auf mehrere Instanzen wird die Leistung verbessert und mehr Traffic kann verarbeitet werden.
Monitoring und Benachrichtigungen: Monitoring-Tools erkennen Probleme wie Serverausfälle, hohe Latenz, Ressourcenüberlastung und lösen Benachrichtigungen oder automatische Failover-Verfahren aus.
Sicherung und Wiederherstellung: Mit Sicherungen können Datenbanken im Falle von Datenbeschädigung oder katastrophalen Fehlern in einen früheren Zustand zurückversetzt werden.
Verbindungs-Pooling (optional): Optimiert die Leistung und Skalierbarkeit von Anwendungen, die mit Ihren Datenbanken interagieren.
Tools für hohe Verfügbarkeit
Patroni ist ein Open-Source-Tool zur Clusterverwaltung für PostgreSQL-Datenbanken, mit dem die hohe Verfügbarkeit für PostgreSQL-Cluster verwaltet und automatisiert werden kann. Patroni verwendet verschiedene verteilte Konsens systeme wie etcd, Consul oder Zookeeper, um den Cluster status zu koordinieren und zu verwalten. Zu den wichtigsten Funktionen und Komponenten von Patroni gehören die hohe Verfügbarkeit mit automatischem Failover, die Leader-Auswahl, die Replikation und die Wiederherstellung. Patroni wird neben dem PostgreSQL-Dienst auf Datenbankserverinstanzen ausgeführt und verwaltet deren Systemdiagnose, Failover und Replikation, um hohe Verfügbarkeit und Zuverlässigkeit zu gewährleisten.
Patroni verwendet ein verteiltes Konsenssystem, um Metadaten zu speichern und den Cluster zu verwalten. In dieser Anleitung verwenden wir einen verteilten Konfigurationsspeicher (Distributed Configuration Store, DCS) namens etcd. etcd wird unter anderem zum Speichern und Abrufen von Informationen zu verteilten Systemen wie Konfiguration, Systemdiagnose und aktueller Status verwendet, um eine konsistente Konfiguration auf allen Knoten zu gewährleisten.
High Availability Proxy (HAProxy) ist eine Open-Source- Software für Load Balancing und Proxying von TCP- und HTTP-basierten Anwendungen. Sie wird verwendet, um die Leistung und Zuverlässigkeit von Webanwendungen zu verbessern, indem eingehende Anfragen auf mehrere Server verteilt werden. HAProxy bietet Load Balancing, indem der Netzwerk-Traffic auf mehrere Server verteilt wird. HAProxy verwaltet auch den Systemdiagnosestatus der Back-End-Server, mit denen es verbunden ist, indem es Systemdiagnosen durchführt. Wenn ein Server eine Systemdiagnose nicht besteht, sendet HAProxy keinen Traffic mehr an diesen Server, bis er die Systemdiagnosen wieder besteht.
Überlegungen zur synchronen und asynchronen Replikation
In einem von Patroni verwalteten PostgreSQL-Cluster kann die Replikation sowohl im synchronen als auch im asynchronen Modus konfiguriert werden. Standardmäßig verwendet Patroni die asynchrone Streamingreplikation. Bei strengen RPO-Anforderungen empfehlen wir die Verwendung der synchronen Replikation.
Die synchrone Replikation in PostgreSQL sorgt für Datenkonsistenz, indem gewartet wird, bis Transaktionen sowohl in die primäre als auch in mindestens eine synchrone Standby-Instanz geschrieben wurden, bevor sie ausgeführt werden. Die synchrone Replikation sorgt dafür, dass Daten bei einem Ausfall der primären Instanz nicht verloren gehen. Sie bietet eine hohe Datenbeständigkeit und -konsistenz. Die primäre Instanz wartet auf Bestätigungen von der synchronen Standby-Instanz, was aufgrund der zusätzlichen Round-Trip-Zeit zu einer höheren Latenz und möglicherweise zu einem geringeren Durchsatz führen kann. Dies kann den Gesamtdurchsatz des Systems verringern, insbesondere bei hoher Last.
Bei der asynchronen Replikation können Transaktionen im primären Cluster ausgeführt werden, ohne auf Bestätigungen von Standby-Clustern zu warten. Die primäre Instanz sendet WAL-Einträge an Standby-Instanzen, die sie asynchron anwenden. Dieser asynchrone Ansatz reduziert die Schreiblatenz und verbessert die Leistung, birgt jedoch das Risiko eines Datenverlusts, wenn die primäre Instanz ausfällt, bevor die Standby-Instanz auf dem neuesten Stand ist. Standby-Instanzen sind möglicherweise nicht auf dem neuesten Stand, was bei einem Failover zu potenziellen Inkonsistenzen führen kann.
Die Wahl zwischen synchroner und asynchroner Replikation in einem Patroni-Cluster hängt von den spezifischen Anforderungen an Datenbeständigkeit, Konsistenz und Leistung ab. Die synchrone Replikation ist in Szenarien vorzuziehen, in denen Datenintegrität und minimaler Datenverlust entscheidend sind. Die asynchrone Replikation eignet sich für Umgebungen, in denen Leistung und geringere Latenz priorisiert werden. Sie können eine gemischte Lösung konfigurieren, die einen Cluster mit drei Knoten mit einer synchronen Standby-Instanz in derselben Region, aber in einer anderen nahe gelegenen Zone oder einem anderen Rechenzentrum und einer zweiten asynchronen Standby-Instanz in einer anderen Region oder einem weiter entfernten Rechenzentrum umfasst, um sich vor potenziellen regionalen Ausfällen zu schützen.