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

Pacchetti PGLogical 1.1 per PostgreSQL 9.6beta1

Abbiamo reso disponibili i pacchetti pglogical 1.1 per PostgreSQL 9.6beta1 sia per le distribuzioni basate su rpm che deb. Sono disponibili per l'installazione dal nostro repository di pacchetti pglogical standard.

Potresti chiedere perché rilasciamo pacchetti per la versione beta di Postgres? Bene, uno dei motivi è che puoi usare pglogical per replicare il tuo database PostgreSQL 9.5 o 9.4 esistente su 9.6beta1 in tempo reale ed eseguire test su di esso per eliminare eventuali bug rimanenti nella versione beta. Ecco un breve tutorial su come farlo.

Il primo passo è installare PostgreSQL 9.6beta1, controllare l'annuncio di rilascio per informazioni su come farlo. Il secondo passo è installare pglogical come spiegato nella pagina delle istruzioni di installazione.

Ora per l'effettiva configurazione della replica. È abbastanza facile. Inizia assicurandoti che PostgreSQL sia configurato per consentire la replica logica:

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'

La modifica delle impostazioni di cui sopra richiede il riavvio del server.

Dovresti anche consentire le connessioni di replica in entrata in pg_hba.conf (proprio come quando si imposta la replica dello streaming fisico). La riga in pg_hba.conf dovrebbe assomigliare a questa:

host    replication     postgres        10.0.0.2/32            md5

Per ulteriori informazioni, vedere la pagina della documentazione di pg_hba.

Quindi, installa l'estensione pglogical sul database del provider e crea il nodo pglogical lì:

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

Quindi fai lo stesso sul nuovo database 9.6:

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

Nota che le stringhe di connessione dovrebbero portare al database in cui stai eseguendo questi comandi.

Di nuovo nel database del provider, aggiungi le tabelle che desideri replicare al default insieme di replica. Un modo semplice per farlo è aggiungere tutte le tabelle nel public schema come questo:

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

E infine, sempre sul database degli abbonati, crea un abbonamento che si collega al provider e inizia a replicare.

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

Qui la stringa di connessione dovrebbe essere la stessa utilizzata durante la creazione del nodo pglogico del provider. La synchronize_structure := true significa che pglogical copierà tutte le strutture delle tabelle dal database del provider al database dell'abbonato (usando lo standard pg_dump ).

E il gioco è fatto, ora hai una replica funzionante tra il tuo database PostgreSQL 9.5 o 9.4 esistente e il nuovo PostgreSQL 9.6beta1.

Controlla la documentazione pglogical e le pagine del progetto per ulteriori informazioni sulle funzioni utilizzate in questo post e su come fare di più della semplice replica.