We hebben pglogical 1.1-pakketten beschikbaar gemaakt voor PostgreSQL 9.6beta1 voor zowel rpm- als deb-gebaseerde distributies. Ze zijn beschikbaar voor installatie vanuit onze standaard pglogische pakketrepository.
U vraagt zich misschien af waarom we pakketten voor de bètaversie van Postgres vrijgeven? Welnu, een van de redenen is dat je pglogical kunt gebruiken om je bestaande PostgreSQL 9.5- of 9.4-database in realtime te repliceren naar de 9.6beta1 en er tests op uit te voeren om eventuele resterende bugs in de bètaversie te verwijderen. Hier is een korte tutorial over hoe je dat kunt doen.
De eerste stap is het installeren van PostgreSQL 9.6beta1, bekijk de release-aankondiging voor informatie over hoe u dat kunt doen. De tweede stap is het installeren van pglogical zoals uitgelegd op de pagina met installatie-instructies.
Nu voor de daadwerkelijke replicatie-instellingen. Het is vrij eenvoudig. Begin met ervoor te zorgen dat de PostgreSQL is geconfigureerd om de logische replicatie toe te staan:
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'
Om de bovenstaande instellingen te wijzigen, moet de server opnieuw worden opgestart.
U moet ook inkomende replicatieverbindingen toestaan in pg_hba.conf (net als bij het instellen van fysieke streamingreplicatie). De regel in pg_hba.conf zou er ongeveer zo uit moeten zien:
host replication postgres 10.0.0.2/32 md5
Zie de pg_hba documentatiepagina voor meer info.
Installeer vervolgens de pglogical-extensie op de providerdatabase en maak daar het pglogical-knooppunt:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
node_name := 'provider1',
dsn := 'host=providerhost port=5432 dbname=db'
);
Doe dan hetzelfde met de nieuwe 9.6 database:
CREATE EXTENSION pglogical;
SELECT pglogical.create_node(
node_name := 'subscriber1',
dsn := 'host=subscriberhost port=5432 dbname=db'
);
Merk op dat de verbindingsreeksen moeten leiden naar de database waarin u deze opdrachten uitvoert.
Terug in de providerdatabase, voeg de tabellen die u wilt repliceren toe aan de default
replicatie ingesteld. Een eenvoudige manier om dit te doen is door alle tabellen toe te voegen aan de public
schema als volgt:
SELECT pglogical.replication_set_add_all_tables('default', ARRAY['public']);
En tot slot, opnieuw in de abonneedatabase, maak een abonnement dat verbinding maakt met de provider en begint te repliceren.
SELECT pglogical.create_subscription(
subscription_name := 'subscription1',
provider_dsn := 'host=providerhost port=5432 dbname=db',
synchronize_structure := true
);
Hier moet de verbindingsreeks dezelfde zijn als die wordt gebruikt bij het maken van het pglogische knooppunt van de provider. De synchronize_structure := true
betekent dat pglogical alle tabelstructuren van de providerdatabase naar de abonneedatabase kopieert (met behulp van standaard pg_dump
).
En dat is alles, u heeft nu een werkende replicatie tussen uw bestaande PostgreSQL 9.5- of 9.4-database en de nieuwe PostgreSQL 9.6beta1.
Bekijk de pglogische documentatie en projectpagina's voor aanvullende informatie over de functies die in dit bericht worden gebruikt en over hoe u meer kunt doen dan alleen eenvoudige replicatie.