Project

General

Profile

Replicazione di PostgresSQL

ATTENZIONE: questo articolo è una bozza, al momento è nello stato di insieme di appunti sparsi senza un'ordine specifico

PostgreSQL supporta diversi meccanismi di replicazione, tratteremo in questo articolo solo uno di questi, la cosiddetta streaming replication.

Come ripristinare una replica

Se per un qualunque motivo la streaming replication si interrompe (la ragione più comune è che non si è previsto sul primario la retention di un sufficiente numero di segmenti WAL a coprire le differenze da trasmettere al secondario) occorre ripristinare manualmente da zero la stessa.

Per farlo è disponibile, a partire dalla versione 9.4 di PostgreSQL il comando pg_basebackup (si legga la documentazione su https://www.postgresql.org/docs/10/app-pgbasebackup.html) che consente di eseguire il ripristino direttamente dal secondario. I passi da seguire per farlo sono i seguenti:

  • fermare postgresql:
    service postgresql stop
    
  • vuotare la directory dei dati (o spostarne i contenuti altrove):
    mkdir oldpgdir/
    mv /var/lib/postgresql/9.6/main/* oldpgdir/
    
  • collegarsi con l'utente postgres:
    su postgres
    
  • ripristinare il DB e la replicazione con:
    pg_basebackup -h IP.DEL.DB.MASTER -U replication -D /var/lib/postgresql/9.6/main/ -P -Xs -R
    

    quest'ultimo comando chiederà la password dell'utente replication usato per gestire la replicazione e provvederà alla ricostruzione.