Logische Replikation
PostgreSQL 10 führt native logische Replikation ein, die auf einem Publish/Subscribe-Modell basiert, sodass wir auf der vorgelagerten Seite (Publisher) Publikationen und auf der nachgelagerten Seite (Subscriber) Abonnements erstellen können. Weitere Details finden Sie in der PostgreSQL-Dokumentation.
In diesem Kapitel verwenden wir einen Cluster aus zwei Knoten, um die native
logische Replikation von PostgreSQL 10 zu demonstrieren. Beachten Sie, dass Sie
auf jeder PostgreSQL-Instanz wal_level = logical konfigurieren und außerdem
die Datei pg_hba.conf anpassen müssen, um replication-Zugriff zwischen
den beiden Knoten zu gewähren.
Testumgebung erstellen
Richten Sie zwei PostgreSQL-10+-Instanzen nach Belieben ein (Docker, eine virtuelle Maschine oder auch zwei Datenbanken auf derselben Maschine) und konfigurieren Sie auf jeder die oben genannten Einstellungen.
Mit beiden Knoten verbinden
Verbinden wir uns mit OmniDB mit beiden PostgreSQL-Knoten. Füllen Sie zunächst die Verbindungsinformationen in der Verbindungsübersicht aus:

Wählen Sie dann beide Verbindungen aus. Beachten Sie, wie OmniDB erkennt, dass es mit PostgreSQL 10 verbunden ist, und einen neuen Knoten in der aktuellen Verbindungsbaumansicht aktiviert: Logical Replication (Logische Replikation). Darin sehen wir Publications (Publikationen) und Subscriptions (Abonnements).

Testtabelle auf beiden Knoten erstellen
Erstellen Sie auf beiden Knoten eine Tabelle wie diese:
CREATE TABLE customers (
login text PRIMARY KEY,
full_name text NOT NULL,
registration_date timestamptz NOT NULL DEFAULT now()
)

Publikation auf der ersten Maschine erstellen
Erweitern Sie innerhalb des Verbindungsknotens den Knoten Logical Replication,
klicken Sie dann mit der rechten Maustaste auf den Knoten Publications und
wählen Sie die Aktion Create Publication (Publikation erstellen). OmniDB
öffnet einen SQL-Vorlagen-Tab mit dem Befehl CREATE PUBLICATION, bereit für
ein paar Anpassungen und zur Ausführung:

Nach dem Anpassen und Ausführen des Befehls können Sie erneut mit der rechten Maustaste auf den Knoten Publications klicken und die Aktion Refresh (Aktualisieren) auswählen. Sie sehen, dass ein neuer Knoten mit demselben Namen angelegt wird, den Sie der Publikation gegeben haben. Erweitern Sie diesen Knoten, um die Details und die Tabellen der Publikation einzusehen:

Abonnement auf der zweiten Maschine erstellen
Erweitern Sie innerhalb des Verbindungsknotens den Knoten Logical Replication,
klicken Sie dann mit der rechten Maustaste auf den Knoten Subscriptions und
wählen Sie die Aktion Create Subscription (Abonnement erstellen). OmniDB
öffnet einen SQL-Vorlagen-Tab mit dem Befehl CREATE SUBSCRIPTION, bereit für
ein paar Anpassungen und zur Ausführung:

Nach dem Anpassen und Ausführen des Befehls können Sie erneut mit der rechten Maustaste auf den Knoten Subscriptions klicken und die Aktion Refresh auswählen. Sie sehen, dass ein neuer Knoten mit demselben Namen angelegt wird, den Sie dem Abonnement gegeben haben. Erweitern Sie diesen Knoten, um die Details, die referenzierten Publikationen und die Tabellen des Abonnements einzusehen:

Außerdem hat der Befehl CREATE SUBSCRIPTION auf der ersten Maschine einen
logischen Replikationsslot namens testsub erzeugt (denselben Namen wie
das Abonnement):

Logische Replikation testen
Um zu prüfen, ob die Replikation funktioniert, erstellen wir einige Daten auf
Knoten 1. Klicken Sie mit der rechten Maustaste auf die Tabelle
public.customers, gehen Sie dann zu Data Actions und klicken Sie auf die
Aktion Edit Data (Daten bearbeiten). In diesem Raster können Sie Daten der
Tabelle hinzufügen, bearbeiten und entfernen. Fügen Sie 2 Beispieldatensätze
hinzu, etwa so:

Prüfen Sie anschließend auf dem anderen Knoten, ob die Tabelle
public.customers automatisch befüllt wurde. Klicken Sie mit der rechten
Maustaste auf die Tabelle public.customers, gehen Sie dann zu Data
Actions und klicken Sie auf die Aktion Query Data:

Wie wir sehen können, wurden beide auf der ersten Maschine erstellten Datensätze auf die zweite Maschine repliziert. Das zeigt uns, dass die logische Replikation funktioniert.
Sie können nun weitere Aktionen durchführen, etwa Tabellen zur Publikation hinzufügen bzw. daraus entfernen oder eine neue Publikation erstellen, die alle Tabellen veröffentlicht.