sql >> Databasteknik >  >> RDS >> PostgreSQL

PGLogical 1.1-paket för PostgreSQL 9.6beta1

Vi har gjort pglogical 1.1-paket tillgängliga för PostgreSQL 9.6beta1 för både rpm- och deb-baserade distributioner. De är tillgängliga för installation från vårt standardpaket för pglogical.

Du kanske frågar varför vi släpper paket för betaversionen av Postgres? Tja, en av anledningarna är att du kan använda pglogical för att replikera din befintliga PostgreSQL 9.5 eller 9.4 databas till 9.6beta1 i realtid och köra tester på den för att hjälpa till att rensa bort eventuella kvarvarande buggar i betaversionen. Här är en snabb handledning om hur du gör det.

Första steget är att installera PostgreSQL 9.6beta1, kolla releasemeddelandet för information om hur du gör det. Det andra steget är att installera pglogical enligt beskrivningen på sidan med installationsinstruktioner.

Nu till själva replikeringsinställningen. Det är ganska enkelt. Börja med att se till att PostgreSQL är konfigurerad för att tillåta den logiska replikeringen:

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'

Ändring av ovanstående inställningar kräver omstart av servern.

Du bör också tillåta inkommande replikeringsanslutningar i pg_hba.conf (precis som när du ställer in fysisk strömmande replikering). Raden i pg_hba.conf bör se ut ungefär så här:

host    replication     postgres        10.0.0.2/32            md5

Se pg_hba-dokumentationssidan för mer information.

Installera sedan tillägget pglogical på leverantörsdatabasen och skapa den pglogiska noden där:

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

Gör sedan samma sak på den nya 9.6-databasen:

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

Observera att anslutningssträngarna ska leda till databasen där du kör dessa kommandon.

Tillbaka i leverantörsdatabasen, lägg till tabellerna du vill replikera till default replikeringsuppsättning. Det enkla sättet att göra detta är att lägga till alla tabeller i public schema så här:

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

Och slutligen, återigen i prenumerantdatabasen, skapa ett abonnemang som ansluter till leverantören och börjar replikera.

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

Här ska anslutningssträngen vara densamma som den som används när du skapar den pglogiska leverantörsnoden. synchronize_structure := true betyder att pglogical kommer att kopiera alla tabellstrukturer från leverantörsdatabasen till abonnentdatabasen (med standard pg_dump ).

Och det är det, du har nu fungerande replikering mellan din befintliga PostgreSQL 9.5 eller 9.4-databas och den nya PostgreSQL 9.6beta1.

Se den pglogiska dokumentationen och projektsidorna för ytterligare information om funktionerna som används i det här inlägget och om hur man gör mer än bara enkel replikering.


  1. Deklarera och initiera variabler på samma rad i VBA

  2. Jämför varchar med röding

  3. Inloggning misslyckades för användaren 'DOMAIN\MACHINENAME$'

  4. Olaglig blandning av sammanställningar (utf8_unicode_ci,IMPLICIT) och (utf8_general_ci,IMPLICIT) för operation '='