In un ambiente di produzione, non importa quanto grande o piccolo sia il tuo PostgreSQL database può essere, il ritorno regolare è un aspetto essenziale della gestione del database. In questo articolo imparerai come eseguire il backup e il ripristino di un database PostgreSQL.

Partiamo dal presupposto che tu abbia già un’installazione funzionante del sistema di database PostgreSQL. In caso contrario, leggi i nostri articoli seguenti per l’installazione PostgreSQL sulla tua distribuzione Linux.

Iniziamo…

Backup di un singolo database PostgreSQL

PostgreSQL fornisce il pg_dump utilità per aiutarti a eseguire il backup dei database. Genera un file di database con comandi SQL in un formato che può essere facilmente ripristinato in futuro.

Per eseguire il backup, a PostgreSQL database, inizia accedendo al server del database, quindi passa al file Postgres account utente ed esegui pg_dump come segue (sostituire tecmintdb con il nome del database di cui si desidera eseguire il backup). Per impostazione predefinita, il formato di output è un file di script SQL in testo normale.

$ pg_dump tecmintdb > tecmintdb.sql

Il pg_dump supporta anche altri formati di output. È possibile specificare il formato di output utilizzando il -F opzione, dove c significa file di archivio in formato personalizzato, d significa archivio in formato directory e t significa file di archivio in formato tar: tutti i formati sono adatti per l’input in pg_restore.

Per esempio:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

Per eseguire il dump dell’output nel formato di output della directory, utilizzare -f flag (utilizzato per specificare il file di output) per specificare la directory di destinazione invece di un file. La directory che verrà creata da pg_dump non deve esistere.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Per eseguire il backup di tutto PostgreSQL database, usa il pg_dumpall strumento come mostrato.

$ pg_dumpall > all_pg_dbs.sql

È possibile ripristinare il dump utilizzando psql come mostrato.

$ pgsql -f all_pg_dbs.sql postgres

Ripristino di un database PostgreSQL

Per ripristinare un file PostgreSQL database, puoi usare il file psql o pg_restore utilità. psql viene utilizzato per ripristinare i file di testo creati da pg_dump mentre pg_restore viene utilizzato per ripristinare un database PostgreSQL da un archivio creato da pg_dump in uno dei formati non di testo normale (personalizzato, tar o directory).

Ecco un esempio di come ripristinare un dump di file di testo normale:

$ psql tecmintdb < tecmintdb.sql

Come accennato in precedenza, un dump in formato personalizzato non è uno script per pgsql, quindi deve essere ripristinato con pg_restore come mostrato.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

Backup di database PostgreSQL di grandi dimensioni

Se il database di cui stai eseguendo il backup è grande e desideri generare un file di output abbastanza più piccolo, puoi eseguire un dump compresso in cui devi filtrare l’output di pg_dump tramite uno strumento di compressione come gzip o uno dei tuoi preferiti:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Se il database è estremamente grande, è possibile eseguire il dump in parallelo scaricando number_of_jobs tabelle contemporaneamente utilizzando il -j bandiera, come mostrato.

$ pg_dump -F d -j 5 -f tecmintdumpdir

È importante notare che l’opzione di dump parallelo riduce il tempo del dump, ma d’altra parte aumenta anche il carico sul server del database.

Backup di database PostgreSQL remoti

pg_dump è un normale strumento client PostgreSQL, supporta operazioni su server di database remoti. Per specificare il server di database remoto pg_dump dovrebbe contattare, utilizzare le opzioni della riga di comando -h per specificare l’host remoto e -p specifica la porta remota su cui è in ascolto il server del database. Inoltre, usa il file -U flag per specificare il nome del ruolo del database con cui connettersi.

Ricordati di sostituire 10.10.20.10 e 5432 e tecmintdb rispettivamente con l’indirizzo IP o il nome host dell’host remoto, la porta del database e il nome del database.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Assicurati che l’utente che si connette in remoto disponga dei privilegi necessari per accedere al database e che il metodo di autenticazione del database appropriato sia configurato sul server del database, altrimenti riceverai un errore come quello mostrato nella seguente schermata.

Errore di connessione al database PostgreSQL
Errore di connessione al database PostgreSQL

È anche possibile eseguire il dump di un database direttamente da un server a un altro, utilizzare il pg_dump e psql utilità come mostrato.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Backup automatico del database PostgreSQL utilizzando un Cron Job

È possibile eseguire backup a intervalli regolari utilizzando cron lavori. Cron i lavori sono un mezzo comunemente usato per programmare vari tipi di attività da eseguire su un server.

È possibile configurare un cron job da automatizzare PostgreSQL backup del database come segue. Nota che devi eseguire i seguenti comandi come superutente di PostgreSQL:

$ mkdir -p /srv/backups/databases

Quindi, esegui il seguente comando per modificare il crontab per aggiungere un nuovo cron job.

$ crontab -e

Copia e incolla la seguente riga alla fine del crontab. È possibile utilizzare uno qualsiasi dei formati di dump spiegati sopra.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Salva il file ed esci.

Il servizio cron inizierà automaticamente a eseguire questo nuovo lavoro senza un riavvio. E questo cron job verrà eseguito ogni giorno a mezzanotte, è una soluzione minima per l’attività di backup.

Per ulteriori informazioni su come pianificare cron job, vedere: Come creare e gestire cron job su Linux

Per ora è tutto! È una buona idea rendere il backup dei dati una parte della routine di gestione del database. Per contattarci per qualsiasi domanda o commento, utilizza il modulo di feedback qui sotto. Per ulteriori informazioni, vedere le pagine di riferimento pg_dump e pg_restore.

Se apprezzi ciò che facciamo qui su TecMint, dovresti considerare:

TecMint è il sito della comunità più affidabile e in più rapida crescita per qualsiasi tipo di articoli, guide e libri Linux sul web. Milioni di persone visitano TecMint! per cercare o sfogliare le migliaia di articoli pubblicati GRATUITAMENTE a disposizione di tutti.

Se ti piace quello che stai leggendo, valuta di comprarci un caffè (o 2) come segno di apprezzamento.

Supportaci

Siamo grati per il tuo supporto senza fine.


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *