PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PGLogical 1.1-Pakete für PostgreSQL 9.6beta1

Wir haben pglogical 1.1-Pakete für PostgreSQL 9.6beta1 sowohl für rpm- als auch für deb-basierte Distributionen verfügbar gemacht. Sie können von unserem standardmäßigen pglogical-Paket-Repository installiert werden.

Sie fragen sich vielleicht, warum wir Pakete für die Beta-Version von Postgres veröffentlichen? Nun, einer der Gründe ist, dass Sie pglogical verwenden können, um Ihre vorhandene PostgreSQL 9.5- oder 9.4-Datenbank in Echtzeit auf 9.6beta1 zu replizieren und Tests darauf durchzuführen, um verbleibende Fehler in der Beta-Version auszusortieren. Hier ist eine kurze Anleitung dazu.

Der erste Schritt besteht darin, PostgreSQL 9.6beta1 zu installieren. Informationen dazu finden Sie in der Release-Ankündigung. Der zweite Schritt besteht darin, pglogical zu installieren, wie auf der Seite mit den Installationsanweisungen beschrieben.

Nun zum eigentlichen Replikations-Setup. Es ist ziemlich einfach. Stellen Sie zunächst sicher, dass PostgreSQL so konfiguriert ist, dass die logische Replikation zugelassen wird:

wal_level = 'logical'
max_worker_processes = 10   # one per database needed on provider node
                            # one per node needed on subscriber node
max_replication_slots = 10  # one per node needed on provider node
max_wal_senders = 10        # one per node needed on provider node
shared_preload_libraries = 'pglogical'

Das Ändern der obigen Einstellungen erfordert einen Neustart des Servers.

Sie sollten auch eingehende Replikationsverbindungen in pg_hba.conf zulassen (genau wie beim Einrichten der physischen Streaming-Replikation). Die Zeile in pg_hba.conf sollte etwa so aussehen:

host    replication     postgres        10.0.0.2/32            md5

Weitere Informationen finden Sie auf der pg_hba-Dokumentationsseite.

Installieren Sie als Nächstes die pglogical-Erweiterung in der Anbieterdatenbank und erstellen Sie dort den pglogical-Knoten:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'provider1',
    dsn := 'host=providerhost port=5432 dbname=db'
);

Machen Sie dann dasselbe mit der neuen 9.6-Datenbank:

CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
    node_name := 'subscriber1',
    dsn := 'host=subscriberhost port=5432 dbname=db'
);

Beachten Sie, dass die Verbindungszeichenfolgen zu der Datenbank führen sollten, in der Sie diese Befehle ausführen.

Zurück in der Anbieterdatenbank fügen Sie die Tabellen, die Sie replizieren möchten, zum default hinzu Replikationssatz. Eine einfache Möglichkeit, dies zu tun, besteht darin, alle Tabellen in public hinzuzufügen Schema wie folgt:

SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);

Erstellen Sie abschließend erneut in der Abonnentendatenbank ein Abonnement, das eine Verbindung zum Anbieter herstellt und mit der Replikation beginnt.

SELECT pglogical.create_subscription(
    subscription_name := 'subscription1',
    provider_dsn := 'host=providerhost port=5432 dbname=db',
    synchronize_structure := true
);

Hier sollte die Verbindungszeichenfolge dieselbe sein wie die, die beim Erstellen des pglogical-Knotens des Anbieters verwendet wurde. Die synchronize_structure := true bedeutet, dass pglogical alle Tabellenstrukturen von der Anbieterdatenbank in die Abonnentendatenbank kopiert (unter Verwendung von Standard pg_dump ).

Und das war's, Sie haben jetzt eine funktionierende Replikation zwischen Ihrer bestehenden PostgreSQL 9.5- oder 9.4-Datenbank und dem neuen PostgreSQL 9.6beta1.

Weitere Informationen zu den in diesem Beitrag verwendeten Funktionen und dazu, wie man mehr als nur eine einfache Replikation macht, finden Sie in der pglogical-Dokumentation und auf den Projektseiten.