CodeGym /Corsi /SQL SELF /Creare backup di base con pg_dump

Creare backup di base con pg_dump

SQL SELF
Livello 43 , Lezione 2
Disponibile

pg_dump è uno strumento da riga di comando fornito da PostgreSQL che ti permette di esportare un database in un file di backup. Questo file può contenere solo la struttura del database, solo i dati, oppure entrambi.

Il vantaggio principale di pg_dump è che ti permette di spostare dati tra server, ripristinare il database dopo un crash o semplicemente creare un archivio per la conservazione a lungo termine. Nota che questa utility è più adatta per backup logici (usando query SQL) che per la copia fisica dei file del database.

Sintassi base del comando pg_dump

Per creare un backup con pg_dump, basta eseguire questo comando nel terminale:

pg_dump -U username -d database_name -f backup_file.sql

Vediamo i componenti del comando:

  • -U username — specifica il nome utente PostgreSQL che usi per connetterti al database.
  • -d database_name — indica il nome del database di cui vuoi fare il backup.
  • -f backup_file.sql — definisce dove salvare il file di backup. Può essere sia un percorso assoluto che relativo.

Esempio: supponiamo che tu abbia un database university e vuoi fare il backup nel file university_backup.sql. Il comando sarà così:

pg_dump -U postgres -d university -f university_backup.sql

In questo caso PostgreSQL ti chiederà la password dell’utente postgres per permettere l’accesso ai dati.

Consiglio: se lavori su un server locale e non vuoi inserire la password ogni volta, configura il file .pgpass. Dai un’occhiata alla documentazione ufficiale di PostgreSQL per istruzioni dettagliate.

Parametri e come usarli

L’utility pg_dump è super flessibile e puoi configurarla per fare backup con varie opzioni:

  1. Backup solo della struttura del database

Se vuoi salvare solo la struttura del database (tipo per deploy su un nuovo server), usa il flag --schema-only. Esempio di comando:

pg_dump -U postgres -d university --schema-only -f university_schema.sql

Questo creerà uno script SQL che contiene solo comandi CREATE TABLE, CREATE INDEX ecc., senza dati.

  1. Backup solo dei dati

A volte ti serve salvare solo i dati, senza la struttura. In questo caso usa il flag --data-only:

pg_dump -U postgres -d university --data-only -f university_data.sql

Il file risultante avrà comandi INSERT INTO per ripristinare i tuoi dati.

  1. Compressione del backup

Il file di backup può diventare bello grosso, soprattutto se il tuo database ha tante tabelle e dati. Per ridurre la dimensione del file, usa il parametro --compress:

pg_dump -U postgres -d university -f university_backup.sql --compress=6

Il livello di compressione va da 0 (nessuna compressione) a 9 (massima compressione). Ricorda che più alto è il livello, più tempo ci vuole per creare il backup.

  1. Esportazione in formato binario

Se vuoi un ripristino più veloce, puoi salvare il backup in formato binario invece che come script SQL di testo:

pg_dump -U postgres -d university -Fc -f university_backup.dump

Il flag -Fc indica il formato Custom, che puoi ripristinare con l’utility pg_restore.

Esempi di creazione backup

Backup completo del database

Supponiamo che tu abbia un database company e vuoi fare un backup completo, struttura e dati inclusi:

pg_dump -U postgres -d company -f company_backup.sql

Backup di una sola tabella

Se vuoi salvare solo una tabella dal database, usa il parametro -t:

pg_dump -U postgres -d company -t employees -f employees_backup.sql

Questo file conterrà struttura e dati solo dalla tabella employees.

Backup di più tabelle

Per fare backup di più tabelle, aggiungi più parametri -t:

pg_dump -U postgres -d company -t employees -t departments -f selected_tables_backup.sql

Backup compresso

Per risparmiare spazio, usa il flag --compress oppure crea direttamente il file in formato compresso:

pg_dump -U postgres -d company -Fc -f company_backup_compressed.dump

Consigli utili

Controlla la dimensione del file di backup. Se il backup è troppo piccolo, forse c’è stato un errore. Usa il parametro --verbose per avere più dettagli sul processo di backup.

Automatizza il processo. Usa cron o pg_cron per programmare backup regolari. Non dimenticare la rotazione dei vecchi backup per non riempire il disco.

Verifica i backup. Testa i backup ripristinando il database su un server di test.

Errori che potresti incontrare

Errore di autenticazione. Se non hai specificato l’utente giusto o hai dimenticato la password, pg_dump ti darà errore. Assicurati di aver configurato il file .pgpass per l’autenticazione automatica.

Errore di connessione. Se il server PostgreSQL non è avviato o hai scritto male il nome del database, l’utility non riuscirà a creare il backup. Controlla il nome del database e lo stato del server.

Problema di permessi. L’utente con cui lanci pg_dump deve avere i permessi per leggere struttura e dati del database. Usa un ruolo admin se puoi.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION