PostgreSQL 9.2: pg_basebackup disponibile per server slave

pg_basebackup è uno strumento introdotto in PostgreSQL 9.1 che permette di eseguire un base backup del server.

pg_basebackup si comporta come un normale client del database e possiede le opzioni tipiche della libpq. Lavora “a caldo” (gli altri client connessi al server non subiranno nessuna conseguenza durante l’esecuzione di pg_basebackup).

Ricordatevi inoltre che non è possibile eseguire dei base backup di singoli database con questo strumento – per effettuare backup di singoli database avrete bisogno di uno strumento come pg_dump.

Dalla versione 9.2 di Postgres, è possibile eseguire il base backup di un server che è in esecuzione come slave in un cluster replicato.

Ad esempio, assumiamo di avere in piedi un cluster replicato.

Il server slave di Postgres è in esecuzione sulla porta 5433:

 postgres=# SELECT current_setting('port') AS port, pg_is_in_recovery() AS standby;
  port | standby
 ------+---------
  5433 | t
 (1 row)

Proviamo ad eseguire pg_basebackup, usando:

$ pg_basebackup -vD /destinazione/del/base_backup -p 5433

Su Postgres 9.1 questo comando restituirà il seguente errore:

pg_basebackup: could not connect to server: FATAL:  recovery is still in progress, can't accept WAL streaming connections

Mentre su Postgres 9.2 il backup andrà a buon fine:

pg_basebackup: base backup completed

È possibile controllare il contenuto di /destinazione/del/base_backup, per notare che rappresenta una data directory di Postgres perfettamente valida.

Questa nuova caratteristica permetterà di avere a disposizione dei base backup dell’intero cluster aggiornati senza gravare sul server master.

Ecco un’ulteriore funzionalità che contribuisce a rendere sempre più utile il ruolo del server standby ed a migliorare la scalabilità orizzontale di un cluster PostgreSQL in continuità operativa.

This Post Has 0 Comments

Leave A Reply