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