Innanzitutto, una nota. Questo post fornisce una guida generale su come eseguire il backup di una tabella di 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 diverse tabelle.
Questo è un documento 'come fare' che fornisce solo comandi esemplificativi; come viene effettivamente fatto dipende esclusivamente dalla persona che lo effettua 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 esegui il backup di tabelle specifiche bisogna prestare attenzione.
SQL-dump/pg_dump:
L'idea dietro il metodo SQL-dump è quella di generare un file di testo contenente comandi SQL che, se reinseriti nel server, ricreeranno il database nello 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 eseguire backup del database Postgres e utilizzare i backup per ripristinare il database Postgres. Tuttavia, non è limitato solo ai database. Possiamo utilizzare pg_dump per eseguire il backup delle tabelle e poi usarlo per ripristinare 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:
Esegui il 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’ nel 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 tabelle identici in schemi diversi, utilizza l'opzione –schema SCHEMANAME.
Esegui il 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 contiene i comandi create table, alter table e copy per tutte le tabelle nel database ‘pe’.
Esegui il 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 che risiedono sull'istanza Postgres in esecuzione su un determinato server. Per elencare tutti i database che sono stati eseguiti il backup, usa il comando grep “^[\]connect” all.sql.
Come ripristinare il database Postgres
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 il backup 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 tabella appena creata.
Ripristina un database Postgres:
$ /opt/msys/3rdParty/bin/psql -U ecuser -d pe -f pe_dump.sql
Simile al ripristino della tabella, possiamo utilizzare 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.
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 darà tutti i database Postgres nello stato esatto in cui si trovavano quando è stato eseguito un dump dal server di database originale.