Consigli Tecnologici: Come posso eseguire il backup e ripristinare il database Postgres?

Karan Singh

19 giu 2013

Email

1 min read

Consigli Tecnologici: Come posso eseguire il backup e ripristinare il database Postgres?

Conclusioni principali

    • I backup di PostgreSQL possono riguardare una singola tabella, un singolo database o tutti i database a seconda delle tue esigenze.

    • pg_dump crea un file di testo SQL contenente il DDL e i dati necessari per ricreare la tabella o il database di destinazione.

    • pg_dumpall effettua il backup di ogni database sull'istanza di Postgres.

    • Il ripristino viene eseguito con psql, che esegue il dump SQL nel database di destinazione.

    • I ripristini a livello di tabella richiedono di garantire che la tabella non esista già per evitare conflitti.

    • Quando si effettua il backup di singole tabelle, è importante considerare le dipendenze relazionali.

    • I dump possono essere effettuati da locale e ripristinati su istanze di Postgres remote.

    • I backup includono i comandi CREATE, ALTER e COPY a seconda di ciò che viene esportato.

    • Una strategia di backup appropriata dipende dalla comprensione delle relazioni tra le tabelle, dall'uso dello schema e dagli ambienti di distribuzione.

    • Assicurati sempre dell'integrità dei dati effettuando backup che includano le tabelle referenziate quando necessario.

Q&A Highlights

  • Cosa fa effettivamente pg_dump?

    pg_dump genera un file SQL basato su testo contenente l'intero set di comandi necessari per ricreare una tabella o un database esattamente come esisteva al momento del backup.

  • Posso eseguire il backup di una sola tabella invece di un intero database?

    Sì. Usa pg_dump --table TABLENAME per esportare una tabella specifica. Se esistono tabelle con lo stesso nome in schemi diversi, utilizza --schema per specificare quello corretto.

  • Dovrei preoccuparmi delle tabelle correlate quando faccio 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 le altre correlate, potresti compromettere l'integrità referenziale.

  • Come posso eseguire il backup di un intero database?

    Esegui un comando come:

    pg_dump -U <user> <database> -f <output.sql>

    Questo esporta tutte le tabelle, le definizioni dello schema, gli indici e i dati per quel database.

  • Cosa fa pg_dumpall?

    pg_dumpall esegue il backup di ogni database sul server in un unico file SQL. È utile quando si esegue la migrazione o il snapshot di un'intera istanza di 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 "già esistente" durante il ripristino.

  • Cosa succede durante un ripristino completo del database?

    Il file di ripristino esegue:

    • CREATE TABLE

    • ALTER TABLE

    • COPY (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 eseguito il backup?

    Sì. I dump sono portabili. Puoi effettuare un backup localmente e ripristinarlo su un'istanza remota di Postgres, a condizione che le versioni siano compatibili.

  • Il comando pg_dump influisce sul database in esecuzione?

    No. Funziona tramite query SQL e non blocca l'intero database. Cattura in modo sicuro uno snapshot coerente.

  • Come posso ripristinare tutti i database da un file pg_dumpall?

    Usare:

    psql -U <user> -f all_dump.sql

    Questo ricrea ogni database trovato nel dump.

Prima, un disclaimer. Questo post fornisce una guida generale su come effettuare il backup di una tabella del database Postgres. Gli esempi forniti non si riferiscono a nessuna tabella o database specifico. Se stai cercando di effettuare il backup di una tabella specifica, dovresti anche fare il backup delle tabelle che fanno riferimento alle tabelle originali. Poiché Postgres è un database relazionale, ci saranno sempre riferimenti tra un numero di tabelle.

Questo è un documento ‘come fare’ che fornisce solo comandi di esempio, come viene effettivamente fatto dipende esclusivamente dalla persona che lo fa e dai casi d'uso specifici. Mantieni sempre l'integrità dei dati che stai cercando di fare il backup. Effettuare il backup dell'intero database è sempre un'opzione sicura, ma quando si effettuano backup di tabelle specifiche bisogna essere attenti.

SQL-dump/pg_dump:

L'idea dietro il metodo SQL-dump è di generare un file di testo con comandi SQL che, una volta reimmessi nel server, ricreeranno il database nello stesso stato in cui si trovava al momento del dump. PostgreSQL fornisce il programma di utilità pg_dump per questo scopo.

pg_dump è uno strumento efficace e completo per effettuare backup del database Postgres e utilizzare i backup per ripristinare il database Postgres. Tuttavia, non è limitato solo al Database. Possiamo usare pg_dump per fare il backup di tabelle e poi usarlo per ripristinare anche singole tabelle. Usando pg_dump puoi fare il backup del database locale e ripristinarlo su un database remoto.

Come eseguire il Backup del Database Postgres:

Backup di una tabella Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Il comando sopra è un esempio di come eseguire il backup di una tabella specifica da un database Postgres. Utilizzando il comando sopra stiamo eseguendo il backup della tabella ‘orgs’ nello schema ‘maincontrol’ dal database ‘pe’ al file ms_table.sql. Per eseguire il backup di una tabella specifica, usa l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabella uguali in schemi diversi, utilizza l'opzione –schema SCHEMANAME.

  1. Backup di un database Postgres specifico:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Questo è un esempio di backup di un database Postgres specifico. Utilizzando il comando sopra stiamo eseguendo il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup include i comandi create table, alter table e copy per tutte le tabelle nel database ‘pe’.

  2. Backup di tutti i database Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Puoi eseguire il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database presenti sull'istanza Postgres in esecuzione su un particolare server. Per elencare tutti i database che sono stati sottoposti a backup, usa il comando grep “^[\]connect” all.sql.

Backup di una tabella Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Il comando sopra è un esempio di come eseguire il backup di una tabella specifica da un database Postgres. Utilizzando il comando sopra stiamo eseguendo il backup della tabella ‘orgs’ nello schema ‘maincontrol’ dal database ‘pe’ al file ms_table.sql. Per eseguire il backup di una tabella specifica, usa l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabella uguali in schemi diversi, utilizza l'opzione –schema SCHEMANAME.

  1. Backup di un database Postgres specifico:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Questo è un esempio di backup di un database Postgres specifico. Utilizzando il comando sopra stiamo eseguendo il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup include i comandi create table, alter table e copy per tutte le tabelle nel database ‘pe’.

  2. Backup di tutti i database Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Puoi eseguire il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database presenti sull'istanza Postgres in esecuzione su un particolare server. Per elencare tutti i database che sono stati sottoposti a backup, usa il comando grep “^[\]connect” all.sql.

Backup di una tabella Postgres:

$ /opt/msys/3rdParty/bin/pg_dump–table maincontrol.orgs -U ecuser pe -f ms_table.sql

Il comando sopra è un esempio di come eseguire il backup di una tabella specifica da un database Postgres. Utilizzando il comando sopra stiamo eseguendo il backup della tabella ‘orgs’ nello schema ‘maincontrol’ dal database ‘pe’ al file ms_table.sql. Per eseguire il backup di una tabella specifica, usa l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabella uguali in schemi diversi, utilizza l'opzione –schema SCHEMANAME.

  1. Backup di un database Postgres specifico:

    $ /opt/msys/3rdParty/bin/pg_dump -U ecuser pe -f pe_dump.sql

    Questo è un esempio di backup di un database Postgres specifico. Utilizzando il comando sopra stiamo eseguendo il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup include i comandi create table, alter table e copy per tutte le tabelle nel database ‘pe’.

  2. Backup di tutti i database Postgres:

    $ /opt/msys/3rdParty/bin/pg_dumpall -U ecuser> all_dump.sql

    Puoi eseguire il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database presenti sull'istanza Postgres in esecuzione su un particolare server. Per elencare tutti i database che sono stati sottoposti a backup, usa il comando grep “^[\]connect” all.sql.

How to Restore Postgres Database

  1. Ripristina una tabella Postgres:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -f ms_table.sql pe

    Il comando sopra installerà la tabella che è stata salvata nel file ms_table.sql nel database ‘pe’. Assicurati che questa tabella non esista già, altrimenti vedrai una serie di errori di ‘esiste già’. Questo comando crea la tabella ed esporta tutti i dati nella nuova tabella creata.

  2. Ripristina un Database Postgres:

    $ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql

    Simile al ripristino della tabella, possiamo usare il comando sopra per ripristinare l'intero database. Qui stiamo ripristinando il database ‘pe’ utilizzando il file pe_dump.sql che abbiamo creato durante il backup del database nella sezione di Backup sopra.

  3. Ripristina tutti i Database:

    $ /opt/msys/3rdParty/bin/psql -u ecuser -f all_dump.sql

    Ripristina tutti i database utilizzando il comando sopra. ‘all_dump.sql’ era il file che è stato creato utilizzando pg_dumpall. Il comando sopra ci darà tutti i database di Postgres nello stato esatto in cui erano quando è stato eseguito un dump dal server di database originale.

Altre notizie

Leggi di più da questa categoria

A person is standing at a desk while typing on a laptop.

La piattaforma nativa AI completa che si adatta al tuo business.

© 2025 Bird

A person is standing at a desk while typing on a laptop.

La piattaforma nativa AI completa che si adatta al tuo business.

© 2025 Bird