Consigli tecnologici: Come eseguire il backup e il ripristino del database Postgres?
Karan Singh
19 giu 2013
1 min read

Punti Chiave
I backup di PostgreSQL possono mirare a una singola tabella, un singolo database o tutti i database a seconda delle tue esigenze.
pg_dumpcrea un file di testo SQL contenente DDL e dati necessari per ricreare la tabella o il database target.pg_dumpallesegue il backup di ogni database sull'istanza Postgres.Il ripristino viene fatto con
psql, che esegue il dump SQL di nuovo nel database target.I ripristini a livello di tabella richiedono di garantire che la tabella non esista già per evitare conflitti.
Quando si eseguono backup di tabelle individuali, fai attenzione alle dipendenze relazionali.
I dump possono essere presi da locale e ripristinati su istanze Postgres remote.
I backup includono i comandi
CREATE,ALTEReCOPYa seconda di ciò che viene esportato.Una corretta strategia di backup dipende dalla comprensione delle relazioni tra le tabelle, dell'uso dello schema e degli ambienti di distribuzione.
Assicurati sempre dell'integrità dei dati eseguendo backup che includano tabelle referenziate quando necessario.
Punti salienti del Q&A
Cosa fa effettivamente pg_dump?
pg_dumpgenera un file SQL basato su testo contenente l'insieme completo di comandi necessari per ricreare una tabella o un database esattamente come esisteva al momento del backup.Posso eseguire il backup solo di una tabella invece di un intero database?
Sì. Usa
pg_dump --table NOME_TABELLAper esportare una tabella specifica. Se esistono tabelle con lo stesso nome in più schemi, usa--schemaper specificare quello corretto.Dovrei preoccuparmi delle tabelle correlate quando eseguo il backup di una singola tabella?
Assolutamente. PostgreSQL è relazionale, quindi altre tabelle potrebbero fare riferimento a quella che stai eseguendo il backup. Se ripristini solo una tabella senza quelle correlate, potresti compromettere l'integrità referenziale.
Come faccio a eseguire il backup di un database completo?
Esegui un comando come:
pg_dump -U <user> <database> -f <output.sql>Questo esporta tutte le tabelle, le definizioni degli schemi, gli indici e i dati per quel database.
Cosa fa pg_dumpall?
pg_dumpallesegue il backup di tutti i database sul server in un unico file SQL. È utile durante la migrazione o la creazione di snapshot di un'intera istanza Postgres.Posso ripristinare una tabella in un database esistente?
Sì. Usa
psql -U <user> -f <file.sql> <database>.Ma assicurati che la tabella non esista già — altrimenti riceverai errori di "esiste già" durante il ripristino.
Cosa succede durante un ripristino completo del database?
Il file di ripristino viene eseguito:
CREA TABELLAALTERA TABELLACOPIA(per i dati della tabella)
riportando il database al suo stato esatto al momento del dump.
Posso ripristinare su un server diverso da quello da cui ho effettuato il backup?
Sì. I dump sono portabili. Puoi eseguire un backup localmente e ripristinarlo su un'istanza Postgres remota, a condizione che le versioni siano compatibili.
pg_dump influisce sul database in esecuzione?
No. Funziona tramite query SQL e non blocca l'intero database. Acquisisce in modo sicuro uno snapshot coerente.
Come posso ripristinare tutti i database da un file pg_dumpall?
Usa:
psql -U <user> -f all_dump.sqlQuesto ricrea ogni database trovato nel dump.



