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

Come faccio a sapere se il mio backup PostgreSQL è buono?

I backup sono un must in tutti i piani di ripristino di emergenza. Potrebbe non essere sempre sufficiente per garantire un obiettivo del punto di ripristino accettabile, ma è un buon primo approccio. Il problema è cosa succede se, in caso di errore, è necessario utilizzare questo backup e per qualche motivo non è utilizzabile? Probabilmente non vuoi trovarti in quella situazione, quindi, in questo blog, vedremo come confermare se il tuo backup è buono da usare.

Tipi di backup PostgreSQL

Iniziamo a parlare dei diversi tipi di backup. Ne esistono di diversi tipi, ma in generale possiamo separarlo in due semplici categorie:

  • Logico :il backup è archiviato in un formato leggibile come SQL.
  • Fisico :il backup contiene dati binari.

Perché ne stiamo parlando? Perché vedremo che ci sono dei controlli che possiamo fare per un tipo e non per l'altro.

Controllo dei registri di backup

Il primo modo per confermare se tutto va bene è controllare i log di backup.

Il comando più semplice per eseguire un backup PostgreSQL potrebbe essere ad esempio:

$ pg_dumpall > /path/to/dump.sql

Ma come posso sapere se si è verificato un errore durante l'esecuzione del comando? Puoi semplicemente aggiungere per inviare l'output a un file di registro specifico:

$ pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Quindi, puoi aggiungere questa riga nel cron del server per eseguirlo ogni giorno:

30 0 * * * pg_dumpall > /path/to/dump.sql > /var/log/postgres/pg_dump.log

Dovresti monitorare il file di registro per cercare errori, ad esempio aggiungendolo a uno strumento di monitoraggio come Nagios.

Il controllo dei log non è sufficiente per confermare che il backup funzionerà, perché ad esempio, se il file di backup è danneggiato per qualche motivo, probabilmente non lo vedrai nel file di log.

Controllo del contenuto del backup

Se stai utilizzando backup logici, puoi verificare il contenuto del file di backup, per confermare di avere tutti i database lì.

Puoi elencare i tuoi attuali database PostgreSQL usando, ad esempio, questo comando:

$ psql -l | awk '{ print $1 }'| awk 'FNR > 3' |grep '^[a-zA-Z0-9]' |grep -v 'template0'

postgres

template1

world

E controlla quali database hai nel file di backup:

$ grep '^[\]connect' /path/to/dump.sql |awk '{print $2}'

template1

postgres

world

Il problema con questo controllo è che non controlli le dimensioni oi dati, quindi è possibile che tu abbia una perdita di dati se si verificasse un errore durante l'esecuzione del backup.

Ripristino per controllare il backup manualmente

Il modo più sicuro per confermare se un backup funziona è ripristinarlo e accedere al database.

Una volta completato il backup, puoi ripristinarlo manualmente in un altro host copiando il file dump ed eseguendo ad esempio:

$ psql -f /path/to/dump.sql postgres

Poi puoi accedervi e controllare i database:

$ psql

postgres=# \l

                                  List of databases

   Name    | Owner   | Encoding |   Collate | Ctype    | Access privileges

-----------+----------+----------+-------------+-------------+-----------------------

 postgres  | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

 template0 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 template1 | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 | =c/postgres          +

           |          | |             | | postgres=CTc/postgres

 world     | postgres | UTF8     | en_US.utf-8 | en_US.utf-8 |

(4 rows)

Il problema con questo metodo è, ovviamente, che dovresti eseguirlo manualmente o trovare un modo per automatizzarlo, il che potrebbe richiedere molto tempo.

Verifica automatica del backup di ClusterControl

Ora, vediamo come ClusterControl può automatizzare la verifica dei backup di PostgreSQL ed evitare sorprese o attività manuali.

In ClusterControl, seleziona il tuo cluster e vai alla sezione "Backup", quindi seleziona "Crea backup".

La funzione di verifica automatica del backup è disponibile per i backup pianificati. Quindi, scegliamo l'opzione "Programma backup".

Quando si pianifica un backup, oltre a selezionare le opzioni comuni come il metodo o l'archiviazione, è necessario specificare anche la pianificazione/frequenza.

Nel passaggio successivo, puoi comprimere e crittografare il backup e specificare il periodo di conservazione. Qui hai anche la funzione "Verifica backup".

Per utilizzare questa funzione, è necessario un host dedicato (o VM) che non fa parte del cluster.

ClusterControl installerà il software e ripristinerà il backup in questo host . Dopo il ripristino, è possibile visualizzare l'icona di verifica nella sezione Backup ClusterControl.

Conclusione

Come accennato, i backup sono obbligatori in qualsiasi ambiente, ma il backup non è un backup se non puoi utilizzarlo. Quindi, dovresti assicurarti che il tuo backup sia utile nel caso in cui ne avessi bisogno un giorno. In questo blog, abbiamo mostrato diversi modi per controllare il tuo backup per evitare problemi quando desideri ripristinarlo.