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:
- 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.
- 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.
- 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.
- 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.
GO TO FULL VERSION