PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come eseguire il backup e il ripristino di un database PostgreSQL

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

Assumiamo che tu abbia già un'installazione funzionante del sistema di database PostgreSQL. In caso contrario, leggi i nostri articoli seguenti per installare PostgreSQL sulla tua distribuzione Linux.

  • Come installare PostgreSQL e pgAdmin4 in Ubuntu 20.04
  • Come installare PostgreSQL e pgAdmin in CentOS 8
  • Come installare PostgreSQL e pgAdmin in RHEL 8

Iniziamo...

Backup di un singolo database PostgreSQL

PostgreSQL fornisce il pg_dump utility 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, un PostgreSQL database, inizia accedendo al server del database, quindi passa a Postgres account utente ed esegui pg_dump come segue (sostituisci 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. Puoi specificare il formato di output usando 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 .

Ad 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 anziché 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 tutti PostgreSQL database, utilizzare il pg_dumpall strumento come mostrato.

$ pg_dumpall > all_pg_dbs.sql

Puoi ripristinare il dump utilizzando psql come mostrato.

$ pgsql -f all_pg_dbs.sql postgres

Ripristino di un database PostgreSQL

Per ripristinare un PostgreSQL database, puoi usare il psql o pg_restore servizi di pubblica 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 un 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 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, puoi eseguire il dump in parallelo scaricando number_of_jobs tabelle contemporaneamente usando -j flag, 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 di 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 di database. Inoltre, usa il -U flag per specificare il nome del ruolo del database con cui connettersi.

Ricorda di sostituire 10.10.20.10 e 5432 e tecmintdb rispettivamente con l'indirizzo IP dell'host remoto o il nome host, 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 schermata seguente.

È anche possibile eseguire il dump di un database direttamente da un server all'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 processo Cron

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

Puoi configurare un processo cron per automatizzare PostgreSQL backup del database come segue. Nota che devi eseguire i seguenti comandi come superutente PostgreSQL:

$ mkdir -p /srv/backups/databases

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

$ crontab -e

Copia e incolla la seguente riga alla fine del crontab. Puoi 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 processo cron verrà eseguito ogni giorno a mezzanotte, è una soluzione minima per l'attività di backup.

Per ulteriori informazioni su come pianificare i lavori cron, vedere:Come creare e gestire i lavori Cron 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.