Die pglogical-Erweiterung

Wählen Sie eine Dokumentationsversion aus:

Auf dieser Seite finden Sie eine Übersicht über die pglogical-Erweiterung, ihre Vorteile und Einschränkungen.

Übersicht

Die pglogical-Erweiterung ist ein robustes und flexibles Tool für die logische Replikation, das für PostgreSQL entwickelt wurde und auch Hochverfügbarkeit und Notfallwiederherstellung unterstützt.

Bei der herkömmlichen binären Replikation, die auch als physische Replikation bezeichnet wird, werden Änderungen auf Dateisystem- und Blockebene repliziert. Dadurch entsteht ein physischer Spiegel im Zielsystem. Die physische Replikation ist zwar robust und schützt den gesamten Datenbankcluster, sie ist aber nur unidirektional und erfordert Zugriff auf die zugrunde liegenden Datenbankdatendateien und Write-Ahead-Log-Dateien (WAL).

Die Erweiterung pglogical extrahiert SQL-Änderungen aus einer Anbieterdatenbank, repliziert sie und spielt sie dann in einer oder mehreren Abonnentendatenbanken ab. Diese Replikation wird als logische Replikation bezeichnet.

Mit der pglogical-Erweiterung können Sie Folgendes tun:

  • Daten zwischen mehreren AlloyDB Omni-Datenbanken replizieren.
  • Daten zwischen AlloyDB Omni und Google Cloud AlloyDB replizieren.
  • Daten zwischen AlloyDB Omni und anderen PostgreSQL-Distributionen replizieren, einschließlich vieler in Cloud-Diensten von Drittanbietern.

Vorteile

Die logische Replikation mit der pglogical-Erweiterung bietet folgende Vorteile:

  • Selektive Replikation:Sie können Filter und Regeln festlegen, um zu bestimmen, welche Daten repliziert werden sollen und wohin. Sie können auswählen, welche Tabellen einbezogen werden sollen und wie neue Tabellen behandelt werden sollen, unabhängig davon, ob sie einbezogen werden oder nicht. Sie können auch Spalten- und Zeilenfilter hinzufügen. Optional kann apply delay hinzugefügt werden, wenn der Abonnent einen bestimmten Zeitpunkt in der Vergangenheit des Anbieters repräsentieren soll.

  • Bidirektionale und Multi-Primary-Replikation:Alle Mitgliedsdatenbanken sind im Lese-/Schreibmodus geöffnet und können vollständig verwendet werden. Jede Endpunktdatenbank fungiert sowohl als Anbieter als auch als Abonnent, was die Erstellung komplexer Replikationsszenarien und Datenaktualisierungen an verschiedenen Endpunkten ermöglicht.

  • Unterstützung durch Cloud-Anbieter:Cloud-Anbieter wie Google erkennen den Wert der pglogical-Erweiterung und integrieren sie in ihre Cloud-Dienste wie Google Cloud SQL for PostgreSQL und AlloyDB. Andere Cloud-Anbieter bieten die pglogical-Erweiterung ebenfalls als Option an, was Multi-Cloud- oder Hybrid-Cloud-Konfigurationen ermöglicht.

  • Versionsübergreifende Replikation:Da pglogical die tatsächlichen SQL-Anweisungen repliziert, ist die Replikation zwischen Hauptversionen von PostgreSQL möglich. Insbesondere wenn die Quelldatenbank des Anbieters eine niedrigere Version als die Zieldatenbank des Abonnenten hat, kann die versionsübergreifende Replikation zuverlässig implementiert werden.

    Die Erweiterung pglogical bietet Unterstützung für viele frühere Versionen von PostgreSQL, z. B. Version 9.4 und höher. Daher ist es eine optimale Wahl für Szenarien, in denen Sie mit Legacy-Systemen arbeiten und Daten in modernere Versionen von PostgreSQL replizieren möchten, z. B. in die Versionen, die in AlloyDB Omni und Google Cloud AlloyDB verwendet werden.

Zusammenfassend lässt sich sagen, dass die pglogical-Erweiterung eine funktionsreiche Lösung für die logische Replikation bietet, die mit älteren Versionen von PostgreSQL und Cloud-verwalteten Diensten wie Google Cloud SQL for PostgreSQL und AlloyDB kompatibel ist.

Einschränkungen der logischen Replikation

Alle Technologien für die logische Replikation, einschließlich der Technologien, die mit anderen relationalen Datenbankplattformen verwendet werden, haben einige Einschränkungen. Eine falsche Verwaltung kann den Replikationsprozess unterbrechen.

Beachten Sie die folgenden Punkte für eine zuverlässige Implementierung:

  • Überlegungen zum Umgang mit datenbankbezogenen und clusterbezogenen Objekten, die außerhalb des Replikationsbereichs liegen. Die pglogical-Erweiterung funktioniert auf Datenbankebene und nur für einen bestimmten Satz von Tabellen und Sequenzen. Andere Objekttypen wie Funktionen und Prozeduren müssen mit einer anderen Methode repliziert werden.
  • Es wird empfohlen, dass alle Replikationstabellen einen Primärschlüssel haben. Mit der Funktion REPLICA IDENTITY der Tabelle können Sie der Erweiterung pglogical mitteilen, welche Spalten die Zeilen eindeutig identifizieren. Das sollte nach Möglichkeit vermieden werden. Tabellen ohne Primärschlüssel sind statisch und werden nie UPDATED oder DELETED. Sie unterstützen nur INSERTS. Für diese Tabellentypen sind keine Primärschlüssel erforderlich.
  • Verwaltung von Triggern und Sequenzen in Abonnentendatenbanken. Standardmäßig werden Trigger als ORIGIN- oder LOCAL-Trigger definiert und werden nicht in der Abonnentendatenbank ausgelöst, wenn die Zeilen repliziert werden. Alle Trigger sollten geprüft werden, um sicherzustellen, dass die Option REPLICA für jeden Trigger festgelegt ist, damit er nicht auf der Abonnentenseite ausgelöst wird, es sei denn, dies ist erforderlich.
  • Konflikte manuell oder automatisch mithilfe von who wins-Regeln beheben.
  • Replikation von DDL-Befehlen (Data Definition Language) durch manuelle Implementierung auf allen Endpunkten oder automatische Replikation von DDL in Abonnentendatenbanken mit der entsprechenden pglogical-API-Funktion in der Anbieterdatenbank.
  • Sorgen Sie dafür, dass neu erstellte Tabellen und Sequenzen manuell oder automatisch Replikationssets in primären Datenbanken hinzugefügt werden.
  • Sorgen Sie dafür, dass ein robustes, leistungsstarkes, zuverlässiges und sicheres TCP-Netzwerk zwischen allen Endpunkten in der Replikationstopologie vorhanden ist.

Für die pglogical-Erweiterung gelten die folgenden zusätzlichen Einschränkungen:

  • Für pglogical Version 2.4.3 sind Superuser-Berechtigungen erforderlich.
  • Die meisten Tabellen und Sequenzen können repliziert werden, andere Objekttypen jedoch nicht. Die Tabellen TEMPORARY und UNLOGGED werden nicht repliziert.pglogical
  • Zum Replizieren von DDL muss die pglogical API-Funktion verwendet werden. Native DDL-Befehle werden nicht repliziert, mit Ausnahme des Befehls TRUNCATE.
  • Wird auf Objektebene pro Tabelle und pro Sequenz ausgeführt und pro Datenbank bereitgestellt. Das bedeutet, dass einige Objekte, einschließlich clusterbezogener Objekte wie users und roles, von der Replikation ausgeschlossen sind und separat verwaltet werden müssen.

Nächste Schritte