sql >> Database teknologi >  >> RDS >> PostgreSQL

PGLogical 1.1-pakker til PostgreSQL 9.6beta1

Vi har gjort pglogical 1.1-pakker tilgængelige til PostgreSQL 9.6beta1 til både rpm- og deb-baserede distributioner. De er tilgængelige til installation fra vores standard pglogical pakkelager.

Du kan spørge, hvorfor vi frigiver pakker til betaversion af Postgres? Nå, en af ​​grundene er, at du kan bruge pglogical til at replikere din eksisterende PostgreSQL 9.5 eller 9.4 database til 9.6beta1 i realtid og køre test på den for at hjælpe med at luge ud af eventuelle resterende fejl i betaversionen. Her er en hurtig vejledning om, hvordan du gør det.

Første trin er at installere PostgreSQL 9.6beta1, tjek udgivelsesmeddelelsen for information om, hvordan du gør det. Andet trin er at installere pglogical som forklaret på siden med installationsinstruktioner.

Nu til den faktiske replikeringsopsætning. Det er ret nemt. Start med at sikre dig, at PostgreSQL er konfigureret til at tillade den logiske replikering:

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 af ovenstående indstillinger kræver genstart af serveren.

Du bør også tillade indgående replikeringsforbindelser i pg_hba.conf (ligesom når du opsætter fysisk streaming replikering). Linjen i pg_hba.conf skulle se nogenlunde sådan ud:

host    replication     postgres        10.0.0.2/32            md5

Se pg_hba-dokumentationssiden for mere information.

Installer derefter pglogical-udvidelsen på udbyderdatabasen og opret den pglogical-node der:

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

Gør derefter det samme på den nye 9.6-database:

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

Bemærk, at forbindelsesstrengene skal føre til databasen, hvor du udfører disse kommandoer.

Tilbage i udbyderdatabasen skal du tilføje de tabeller, du vil replikere, til default replikeringssæt. Enkel måde at gøre dette på er at tilføje alle tabeller i public skema som dette:

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

Og endelig, igen i abonnentdatabasen, skal du oprette et abonnement, som forbinder til udbyderen og begynder at replikere.

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

Her skal forbindelsesstrengen være den samme som den, der blev brugt ved oprettelse af udbyderens pglogiske node. synchronize_structure := true betyder, at pglogical kopierer alle tabelstrukturer fra udbyderdatabasen til abonnentdatabasen (ved brug af standard pg_dump ).

Og det er det, du har nu fungerende replikering mellem din eksisterende PostgreSQL 9.5 eller 9.4 database og den nye PostgreSQL 9.6beta1.

Tjek den pglogiske dokumentation og projektsider for yderligere information om de funktioner, der bruges i dette indlæg og om, hvordan man gør mere end blot simpel replikering.


  1. Værtspakke på Chokolade

  2. Sådan konverteres XMLTYPE i VARCHAR i ORACLE?

  3. Sådan får du optegnelser fra i dag i MySQL

  4. Sådan finder du navnet på en begrænsning i MySQL