Info2soft verwendet Cookies, um Ihnen ein besseres und angenehmeres Surferlebnis auf unserer Website zu ermöglichen. Datenschutzerklärung
Wird geladen...
Beim automatischen Failover von PostgreSQL handelt es sich um einen Vorgang, bei dem ein Standby-Datenbankknoten automatisch zum primären Knoten hochgestuft wird, sobald der aktuelle primäre Knoten nicht mehr erreichbar ist.
Ein automatisches Failover-Verfahren für PostgreSQL ist unerlässlich für die Hochverfügbarkeit von Datenbanken. Bei einem Datenausfall, Cyberangriff oder Systemabsturz sichert es zuverlässig die Geschäftskontinuität und minimiert Ausfallzeiten.
Zwar verfügt PostgreSQL über leistungsstarke Replikationsfunktionen, jedoch ist keine Orchestrierung für automatisches Failover integriert. Datenbankadministratoren müssen Ausfälle manuell erkennen, den Knotenstatus prüfen und den Standby-Knoten hochstufen – dies verlängert Ausfallzeiten und birgt das Risiko menschlicher Fehler.
Die Kenntnis der Failover-Probleme ist erforderlich, um eine zuverlässige und passende Lösung für automatisches Failover auszuwählen.
Im Folgenden werden die gängigsten und am weitesten verbreiteten Tools für automatisches Failover und Switchover bei PostgreSQL vorgestellt.
Dies ist eine Open-Source-Erweiterung für PostgreSQL, die Hochverfügbarkeit durch automatisiertes Failover realisiert. Sie eignet sich hervorragend für Teams, die eine unkomplizierte Einrichtung mit wenigen Abhängigkeiten suchen.
Ein Überwachungsknoten verfolgt den Status von Primär- und Standby-Knoten. Fällt der Primärknoten aus, stuft der Monitor automatisch einen Standby hoch. Es ist eine ausgezeichnete Lösung für Teams, die eine einfache Hochverfügbarkeit ohne komplexe verteilte Konsenssysteme benötigen.
Schritt 1: Installation von pg_auto_failover
Hinzufügen des offiziellen Paket-Repositories und Installieren:
Für Ubuntu/Debian
apt install -y postgresql-14 pg-auto-failover
Für RHEL/CentOS:
yum install -y pg-auto-failover
Schritt 2: Erstellen und Starten des Überwachungsknotens
Der Überwachungsknoten verwaltet den Clusterzustand und trifft Failover-Entscheidungen.
pg_autoctl create monitor --pgdata /var/lib/pgsql/14/monitor
pg_autoctl run monitor
Schritt 3: Initialisierung des Primärknotens
pg_autoctl create postgres \
--pgdata /var/lib/pgsql/14/data \
--monitor postgres://monitor-ip:5432/pg_auto_failover \
--name node-primary
pg_autoctl run
Schritt 4: Hinzufügen eines Standby-Knotens
Auf dem zweiten Server als Hot-Standby registrieren
pg_autoctl create postgres \
--pgdata /var/lib/pgsql/14/data \
--monitor postgres://monitor-ip:5432/pg_auto_failover \
--name node-standby
pg_autoctl run
Schritt 5: Überprüfung des Clusterstatus
pg_autoctl status
pg_autoctl events
Der Cluster aktiviert automatisch die Streaming-Replikation und ist für das automatische PostgreSQL-Failover vorbereitet.
Patroni ist eines der beliebtesten Tools für PostgreSQL-Hochverfügbarkeit. Es nutzt einen verteilten Konfigurationsspeicher wie etcd oder Consul zur Verwaltung der Wahl des Leader-Knotens und zur Ausführung von Failover-Vorgängen.
Funktionsweise:
Schritt 1: Bereitstellen eines 3-Knoten-etcd-Clusters
etcd sorgt für einen verteilten Konsens, um das Split-Brain-Problem zu verhindern.
# Installation von etcd
yum install -y etcd
# Konfigurieren und Starten von etcd auf allen Knoten
systemctl enable --now etcd
Schritt 2: Installieren von Patroni und Abhängigkeiten
pip3 install patroni python-etcd psycopg2-binary
Schritt 3: Erstellen der Patroni-Konfiguration (patroni.yml)
scope: postgres-ha
namespace: /service/
name: node1
restapi:
listen: 0.0.0.0:8008
etcd:
host: node1-ip:2379
postgresql:
listen: 0.0.0.0:5432
connect_address: node1-ip:5432
data_dir: /var/lib/pgsql/14/data
pgpass: /tmp/pgpass
replication:
username: replicator
password: secure-password
Schritt 4: Starten des Patroni-Dienstes
patroni /etc/patroni.yml
Schritt 5: Anzeigen des Clusterstatus
patronictl -c /etc/patroni.yml list
Patroni verwaltet automatisch die Hochstufung des Primärknotens, die Replikation und das automatische PostgreSQL-Failover.
repmgr ist ein einfacheres Tool, das sich auf die Verwaltung von Replikationen und automatisierte Failover-Vorgänge konzentriert. Es wird oft mit individuellen Skripten kombiniert, um eine vollständige Automatisierung zu erreichen und eignet sich gut für einfachere Umgebungen.
Funktionsweise:
Im Folgenden die Schritte zur Einrichtung von repmgr für automatisches PostgreSQL-Failover:
Schritt 1: Installation von repmgr
sudo apt install repmgr
Schritt 2: Konfigurieren von repmgr.conf
node_id=1
node_name=node1
conninfo='host=node1 user=repmgr dbname=repmgr'
data_directory='/var/lib/postgresql/data'
Schritt 3: Registrieren des Primärknotens
repmgr primary register
Schritt 4: Klonen des Standby-Knotens
repmgr standby clone
repmgr standby register
Schritt 5: Aktivieren des automatischen Failovers
repmgrd -f /etc/repmgr.conf
i2Availability ist eine Unternehmenslösung für Hochverfügbarkeit, die nahezu keine Ausfallzeiten, minimalen Datenverlust und vorhersehbare Wiederherstellungen bei allen Ausfallszenarien ermöglicht.
Kernfunktionen von i2Availability:
Dieser Abschnitt behandelt die zentralsten Probleme, auf die Datenbankteams bei der Implementierung von automatischem PostgreSQL-Failover stoßen, mit praktischen Lösungen abgestimmt auf die jeweiligen Tools.
F1: Wie lässt sich das Split-Brain-Problem beim automatischen PostgreSQL-Failover vermeiden?
Ein Split-Brain entsteht, wenn zwei Knoten gleichzeitig den Primärstatus beanspruchen, was zu Datenbeschädigungen führt.
F2: Was ist eine Replikationsverzögerung und wie wirkt sie sich auf das Failover aus?
Die Replikationsverzögerung ist die Zeitverzögerung zwischen einem Schreibvorgang auf dem Primärknoten und der Bestätigung auf dem Standby-Knoten.
F3: Wie lässt sich der alte Primärknoten nach einem Failover wiederherstellen?
Nach einem Failover muss der alte Primärknoten als Standby neu eingebunden werden, um Inkonsistenzen zu vermeiden.
F4: Welches Tool eignet sich für meinen PostgreSQL-Cluster?
Die Auswahl hängt von Clustergröße, vorhandenen Fachkenntnissen und Anforderungen ab:
F5: Wie lassen sich häufige Fehler bei der Einrichtung des Failovers beheben?
Die Implementierung eines zuverlässigen automatischen PostgreSQL-Failovers ist unerlässlich für resiliente, produktionsreife Datenbankcluster, die Ausfallzeiten minimieren, kritische Daten schützen und einen durchgehenden Geschäftsbetrieb sicherstellen. Von Open-Source-Tools wie Patroni, repmgr und pg_auto_failover bis hin zu unternehmensreifen Plattformen gibt es passende Lösungen für jede Anforderung, abhängig von Clustergröße, betrieblicher Komplexität und Verfügbarkeitsanforderungen.
Für kleine und mittlere Umgebungen liefern leichtgewichtige Open-Source-Lösungen eine grundlegende Hochverfügbarkeit mit vergleichsweise einfacher Einrichtung. Bei geschäftskritischen Systemen, bei denen kein Datenverlust, vereinfachter Betrieb und starke Fehlerisolation gefordert sind, bietet i2Availability von Info2Soft eine vollständigere, unternehmensreife Lösung. Funktionen wie der Split-Brain-Schutz mit doppelter Arbitrierung, automatisches Failback, eine zentrale Web-Konsole und native Unterstützung mehrerer Rechenzentren beseitigen viele Nachteile von Architekturen, die auf externen DCS-Systemen basieren.
Ob lokal, in der Cloud oder in Hybrid-Umgebungen eingesetzt: Eine durchdachte Strategie für automatisches Failover stellt sicher, dass Ihr PostgreSQL-Cluster bei jedem Ausfallszenario verfügbar, konsistent und wiederherstellbar bleibt. Mit der passenden Lösung und bewährten Best Practices erreichen Unternehmen nahezu keinen RTO und starke Garantien für die Datenintegrität ihrer wichtigsten Arbeitslasten.