sql >> Database >  >> RDS >> PostgreSQL

PGLogical 1.1-pakketten voor PostgreSQL 9.6beta1

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.


  1. Wat zijn verschillende soorten beperkingen die beschikbaar zijn in SQL Server - SQL Server / T-SQL-zelfstudie, deel 50

  2. Hoe de korte maandnaam van een datum in MySQL te krijgen

  3. Hoe rijen naar kolommen in Oracle te converteren?

  4. Werken met MySQL-database-engines