Consigli tecnologici: Come eseguire il backup e il ripristino del database Postgres?

Karan Singh

19 giu 2013

Email

1 min read

Consigli tecnologici: Come eseguire il backup e il ripristino del database Postgres?

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_dump crea un file di testo SQL contenente DDL e dati necessari per ricreare la tabella o il database target.

    • pg_dumpall esegue 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, ALTER e COPY a 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_dump genera 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_TABELLA per esportare una tabella specifica. Se esistono tabelle con lo stesso nome in più schemi, usa --schema per 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_dumpall esegue 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 TABELLA

    • ALTERA TABELLA

    • COPIA (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.sql

    Questo ricrea ogni database trovato nel dump.

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

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

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

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

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

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

SQL-dump/pg_dump:

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

pg_dump è uno strumento efficace e completo per eseguire il backup dei database Postgres e utilizzare i backup per ripristinare il database postgres. Tuttavia, non è limitato solo ai database. Possiamo usare pg_dump per eseguire il backup delle tabelle e poi usarlo per ripristinare anche singole tabelle. Utilizzando pg_dump puoi eseguire il backup del database locale e ripristinarlo su un database remoto.

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

pg_dump è uno strumento efficace e completo per eseguire il backup dei database Postgres e utilizzare i backup per ripristinare il database postgres. Tuttavia, non è limitato solo ai database. Possiamo usare pg_dump per eseguire il backup delle tabelle e poi usarlo per ripristinare anche singole tabelle. Utilizzando pg_dump puoi eseguire il backup del database locale e ripristinarlo su un database remoto.

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

pg_dump è uno strumento efficace e completo per eseguire il backup dei database Postgres e utilizzare i backup per ripristinare il database postgres. Tuttavia, non è limitato solo ai database. Possiamo usare pg_dump per eseguire il backup delle tabelle e poi usarlo per ripristinare anche singole tabelle. Utilizzando pg_dump puoi eseguire il backup del database locale e ripristinarlo su un database remoto.

Come eseguire il backup del database Postgres:

Panoramica delle opzioni di backup di Postgres

Ambito di backup

Strumento utilizzato

File di output

Cosa include

Quando utilizzarlo

Tabella singola

pg_dump

.sql

DDL della tabella + dati

Ripristino o migrazione di tavole isolate

Database singolo

pg_dump

.sql

Tutte le tabelle, schema, dati

Backup completo del database

Tutti i database

pg_dumpall

.sql

Ogni database sull'istanza

Backup o migrazione a livello di server


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 effettuare il backup di una specifica tabella da un database Postgres. Utilizzando il comando sopra stiamo effettuando il backup della tabella ‘orgs’ nello schema ‘maincontrol’  dal database ‘pe’ al file ms_table.sql. Per effettuare il backup di una specifica tabella, utilizzare l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabelle identici in schemi diversi, utilizzare 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 effettuando il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup contiene comandi per creare tabelle, modificare tabelle e copiare 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 effettuare il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database che risiedono sull'istanza di Postgres in esecuzione su un determinato server. Per elencare tutti i database che sono stati sottoposti a backup, utilizzare il comando grep “^[\]connect” all.sql.

Panoramica delle opzioni di backup di Postgres

Ambito di backup

Strumento utilizzato

File di output

Cosa include

Quando utilizzarlo

Tabella singola

pg_dump

.sql

DDL della tabella + dati

Ripristino o migrazione di tavole isolate

Database singolo

pg_dump

.sql

Tutte le tabelle, schema, dati

Backup completo del database

Tutti i database

pg_dumpall

.sql

Ogni database sull'istanza

Backup o migrazione a livello di server


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 effettuare il backup di una specifica tabella da un database Postgres. Utilizzando il comando sopra stiamo effettuando il backup della tabella ‘orgs’ nello schema ‘maincontrol’  dal database ‘pe’ al file ms_table.sql. Per effettuare il backup di una specifica tabella, utilizzare l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabelle identici in schemi diversi, utilizzare 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 effettuando il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup contiene comandi per creare tabelle, modificare tabelle e copiare 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 effettuare il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database che risiedono sull'istanza di Postgres in esecuzione su un determinato server. Per elencare tutti i database che sono stati sottoposti a backup, utilizzare il comando grep “^[\]connect” all.sql.

Panoramica delle opzioni di backup di Postgres

Ambito di backup

Strumento utilizzato

File di output

Cosa include

Quando utilizzarlo

Tabella singola

pg_dump

.sql

DDL della tabella + dati

Ripristino o migrazione di tavole isolate

Database singolo

pg_dump

.sql

Tutte le tabelle, schema, dati

Backup completo del database

Tutti i database

pg_dumpall

.sql

Ogni database sull'istanza

Backup o migrazione a livello di server


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 effettuare il backup di una specifica tabella da un database Postgres. Utilizzando il comando sopra stiamo effettuando il backup della tabella ‘orgs’ nello schema ‘maincontrol’  dal database ‘pe’ al file ms_table.sql. Per effettuare il backup di una specifica tabella, utilizzare l'opzione –table TABLENAME nel comando pg_dump. Se ci sono nomi di tabelle identici in schemi diversi, utilizzare 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 effettuando il backup del database per Message Central ‘pe’ nel file pe_dump.sql. Il file di backup contiene comandi per creare tabelle, modificare tabelle e copiare 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 effettuare il backup di tutti i database utilizzando il comando pg_dumpall. Il comando sopra creerà un dump di tutti i database che risiedono sull'istanza di Postgres in esecuzione su un determinato server. Per elencare tutti i database che sono stati sottoposti a backup, utilizzare il comando grep “^[\]connect” all.sql.

Come ripristinare il database Postgres

Panoramica delle opzioni di ripristino di Postgres

Ambito di ripristino

Strumento utilizzato

File di input

Requisito chiave

Problema comune

Singola tabella

psql

Dump della tabella .sql

La tabella non deve già esistere

Errori di “già esiste”

Singolo database

psql

Dump del database .sql

Il DB di destinazione deve esistere

Scrittura involontaria di dati

Tutti i database

psql

Dump completo .sql

Accesso superuser raccomandato

Ripristino di più di quanto previsto


  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 eseguita nel file ms_table.sql nel database ‘pe’. Assicurati che questa tabella non esista già, altrimenti vedrai molti errori di ‘già esiste’. 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 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 creato utilizzando pg_dumpall. Il comando sopra ci fornirà tutti i database Postgres nello stato esatto in cui si trovavano quando è stato eseguito un dump dal server del database originale.

Panoramica delle opzioni di ripristino di Postgres

Ambito di ripristino

Strumento utilizzato

File di input

Requisito chiave

Problema comune

Singola tabella

psql

Dump della tabella .sql

La tabella non deve già esistere

Errori di “già esiste”

Singolo database

psql

Dump del database .sql

Il DB di destinazione deve esistere

Scrittura involontaria di dati

Tutti i database

psql

Dump completo .sql

Accesso superuser raccomandato

Ripristino di più di quanto previsto


  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 eseguita nel file ms_table.sql nel database ‘pe’. Assicurati che questa tabella non esista già, altrimenti vedrai molti errori di ‘già esiste’. 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 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 creato utilizzando pg_dumpall. Il comando sopra ci fornirà tutti i database Postgres nello stato esatto in cui si trovavano quando è stato eseguito un dump dal server del database originale.

Panoramica delle opzioni di ripristino di Postgres

Ambito di ripristino

Strumento utilizzato

File di input

Requisito chiave

Problema comune

Singola tabella

psql

Dump della tabella .sql

La tabella non deve già esistere

Errori di “già esiste”

Singolo database

psql

Dump del database .sql

Il DB di destinazione deve esistere

Scrittura involontaria di dati

Tutti i database

psql

Dump completo .sql

Accesso superuser raccomandato

Ripristino di più di quanto previsto


  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 eseguita nel file ms_table.sql nel database ‘pe’. Assicurati che questa tabella non esista già, altrimenti vedrai molti errori di ‘già esiste’. 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 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 creato utilizzando pg_dumpall. Il comando sopra ci fornirà tutti i database Postgres nello stato esatto in cui si trovavano quando è stato eseguito un dump dal server del database originale.

Altre notizie

Leggi di più da questa categoria

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

La piattaforma completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello

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

La piattaforma completa nativa dell'IA che si espande con la tua azienda.

© 2025 Uccello