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.