Allora, immagina che il tuo database sia un enorme archivio di biblioteca con migliaia di libri. Un backup completo è come mandare ogni notte un corriere a copiare tutti i libri. Ma se quasi nulla è cambiato? Non solo è lento, ma stressa un sacco il trasporto e occupa un sacco di spazio. Ed è qui che entrano in gioco gli approcci incrementale e differenziale. Lavoriamo in modo più smart, copiando solo quello che è davvero cambiato.
Oggi vediamo questi tipi di backup:
- Backup completo: copia completa del database.
- Backup incrementale: copia solo le modifiche dall'ultimo backup.
- Backup differenziale: copia le modifiche dall'ultimo backup completo.
Ognuno di questi approcci ha i suoi pro, contro e casi d'uso. Vediamoli insieme.
Backup completo
Il backup completo (o Full Backup) è una copia di sicurezza dell'intero database in un dato momento. Contiene sia la struttura del database (tabelle, indici, schemi), sia tutti i dati presenti. In parole povere, è uno "snapshot" istantaneo di tutto il database.
Esempio di comando per un backup completo:
pg_dump -U username -d database_name -F c -f full_backup.dump
Qui:
-U username— nome utente PostgreSQL.-d database_name— nome del database.-F c— formato del backup (custom, comodo per il restore conpg_restore).-f full_backup.dump— nome del file dove viene salvata la copia di backup.
Scoprirai di più sul comando pg_dump e i suoi parametri nelle prossime lezioni :P
Vantaggi del backup completo:
- Facilità di ripristino. Se qualcosa va storto, il backup completo ti permette di ripristinare tutto il database in fretta.
- Snapshot completo dei dati. Può essere usato per spostare tutto il database su un altro server o ambiente.
Svantaggi del backup completo:
- Volume dei dati: il backup completo può essere enorme, soprattutto se hai tanti dati.
- Tempo di esecuzione: più dati hai, più tempo ci vuole per fare la copia.
- Spazio di archiviazione: ogni backup completo occupa spazio separato, e può mangiarsi un sacco di storage.
Quando usare il backup completo:
- Quando crei la prima copia di backup.
- Prima di fare grandi cambiamenti nel database.
- Per archiviazione a lungo termine (fai un backup completo e lo mandi in uno storage "freddo").
Backup incrementali
Il backup incrementale (Incremental Backup) salva solo quei file che sono cambiati dall'ultimo backup — che sia completo o incrementale. Questo permette di risparmiare un sacco di spazio su disco e velocizza il processo di backup.
In PostgreSQL i backup incrementali si possono fare con lo strumento pgBackRest — una utility potente pensata per creare e gestire backup PostgreSQL con supporto per strategie complete, incrementali e differenziali.
Come funziona pgBackRest?
pgBackRestusa metadati e checksum dei file per capire cosa è cambiato.- Solo i file davvero modificati vengono inclusi nel backup incrementale.
- Supporta l'archiviazione automatica dei file WAL, così puoi fare il restore fino al punto che ti serve.
Esempio di comando per backup incrementale:
pgbackrest --stanza=main --type=incr backup
Dove:
--stanza=main— nome della configurazione (set di parametri per un certo DB).--type=incr— indica che si fa un backup incrementale.
Prima del primo backup incrementale devi per forza aver fatto un completo (--type=full).
Vantaggi dei backup incrementali con pgBackRest:
- Risparmio di spazio: vengono copiati solo i file modificati.
- Backup veloce: soprattutto se ci sono poche modifiche.
- Gestione automatica dei WAL: pgBackRest archivia e applica i file WAL da solo.
- Flessibilità nel restore: puoi scegliere il punto di ripristino (PITR).
Svantaggi e particolarità:
- Serve una configurazione iniziale: devi configurare
stanza, la cartella del repository, i permessi. - Non è semplicissimo per chi inizia: serve capire i WAL e l'architettura di PostgreSQL.
- Dipendenza dal repository: tutti i backup stanno centralizzati — è importante gestire bene lo storage.
Quando usare i backup incrementali:
- Se il database viene aggiornato spesso.
- Quando il backup completo è troppo pesante o ci mette troppo tempo.
- Se vuoi una strategia di restore affidabile e automatica con il minimo sforzo.
Backup differenziali
Il backup differenziale (Differential Backup) salva tutte le modifiche avvenute dall'ultimo backup completo. La differenza rispetto all'incrementale è che ogni backup differenziale contiene tutte le modifiche a partire dall'ultimo backup completo. Quindi, per ripristinare il database, ti serve solo l'ultimo backup completo e l'ultimo differenziale.
Esempio di processo:
- Prima sera: si fa un backup completo (A).
- Seconda sera (B): si fa un backup differenziale — contiene le modifiche da A.
- Terza sera (C): si fa un backup differenziale — contiene ancora le modifiche da A.
Vantaggi:
- Facilità di ripristino: Per ripristinare il database servono solo il backup completo e l'ultimo differenziale.
- Più veloce del completo: Il backup differenziale è più rapido del completo, perché copia solo le modifiche.
Svantaggi:
- Dimensione del file di backup: Ogni nuovo backup differenziale cresce di dimensione, perché contiene tutte le modifiche dall'ultimo completo.
- Spazio su disco: A lungo andare può servire più spazio rispetto agli incrementali.
Il backup differenziale è utile quando vuoi semplificare il restore: tiene tutte le modifiche dall'ultimo completo. È comodo soprattutto se i dati cambiano spesso, ma fare sempre backup completi è troppo pesante in termini di tempo o risorse. In questi casi, l'approccio differenziale è un buon compromesso tra velocità e affidabilità.
Confronto tra i tipi di backup
| Tipo di backup | Completo | Incrementale | Differenziale |
|---|---|---|---|
| Volume dei dati | Massimo | Minimo | Medio |
| Tempo di esecuzione | Lungo | Veloce | Moderato |
| Ripristino | Semplice | Complicato (dipende da tutti i backup) | Medio (serve l'ultimo completo e differenziale) |
| Quando usarlo | Copia iniziale, migrazioni | Backup frequenti in tempo reale | Backup regolari |
La scelta del tipo di backup dipende da quanto vuoi essere sicuro sui dati, da quanto spesso cambiano e dalle risorse che hai. Per database piccoli va bene il backup completo regolare. Se il database cresce, i backup incrementali ti fanno risparmiare spazio. E se per te è importante ripristinare in fretta, i backup differenziali possono essere la scelta migliore. L'importante è non dimenticare la regolarità e l'automazione!
GO TO FULL VERSION