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.