Il backup e il ripristino (restore) dei database sono operazioni fondamentali per garantire la sicurezza e la disponibilità dei dati in caso di errori, guasti o situazioni impreviste. Di seguito, esploriamo i concetti principali e le procedure per eseguire queste operazioni.
Un backup è una copia di sicurezza dei dati del database che può essere utilizzata per ripristinare il database in uno stato precedente in caso di perdita o corruzione dei dati.
- Tipi di Backup:
- Backup completo (Full Backup): Copia tutti i dati e le strutture del database.
- Backup differenziale: Copia solo i dati modificati dall'ultimo backup completo.
- Backup incrementale: Copia solo i dati modificati dall'ultimo backup (che sia completo o incrementale).
- Backup log transazionali: Salva solo i log delle transazioni, utile per ripristinare i dati a un momento specifico.
Il restore è il processo di ripristino di un database utilizzando un file di backup. Questa operazione viene effettuata in caso di perdita di dati, errori umani o guasti hardware/software.
Comando SQL:
BACKUP DATABASE NomeDatabase
TO DISK = 'C:\PercorsoBackup\NomeDatabase.bak'
WITH FORMAT;
TO DISK
: Specifica il percorso del file di backup.WITH FORMAT
: Crea un nuovo backup formattando i file esistenti.
Comando SQL:
BACKUP DATABASE NomeDatabase
TO DISK = 'C:\PercorsoBackup\NomeDatabase_Diff.bak'
WITH DIFFERENTIAL;
- Differenza rispetto al backup completo: Memorizza solo le modifiche rispetto all'ultimo backup completo.
Comando SQL:
BACKUP LOG NomeDatabase
TO DISK = 'C:\PercorsoBackup\NomeDatabase_Log.trn';
- Scopo: Traccia tutte le transazioni avvenute nel database, utile per ripristini puntuali.
Comando SQL:
RESTORE DATABASE NomeDatabase
FROM DISK = 'C:\PercorsoBackup\NomeDatabase.bak'
WITH RECOVERY;
WITH RECOVERY
: Completa il ripristino e rende il database disponibile.
Comando SQL:
RESTORE DATABASE NomeDatabase
FROM DISK = 'C:\PercorsoBackup\NomeDatabase.bak'
WITH NORECOVERY;
RESTORE DATABASE NomeDatabase
FROM DISK = 'C:\PercorsoBackup\NomeDatabase_Diff.bak'
WITH RECOVERY;
WITH NORECOVERY
: Mantiene il database nello stato di ripristino per permettere ulteriori restore (es. backup incrementali o differenziali).
Comando SQL:
RESTORE DATABASE NomeDatabase
FROM DISK = 'C:\PercorsoBackup\NomeDatabase.bak'
WITH NORECOVERY;
RESTORE LOG NomeDatabase
FROM DISK = 'C:\PercorsoBackup\NomeDatabase_Log.trn'
WITH RECOVERY;
- Permette il ripristino a uno stato specifico, utile in caso di errori.
Comando da terminale:
mysqldump -u utente -p NomeDatabase > backup.sql
mysqldump
: Utility di MySQL per creare un dump del database.backup.sql
: File di testo contenente istruzioni SQL per ricreare il database.
Comando da terminale:
mysql -u utente -p NomeDatabase < backup.sql
Comando da terminale:
pg_dump NomeDatabase > backup.sql
pg_dump
: Utility per creare un dump del database PostgreSQL.
Comando da terminale:
psql NomeDatabase < backup.sql
Per un backup più veloce e completo:
pg_basebackup -D /percorso/destinazione -F tar -X fetch
- Frequenza: Pianificare backup regolari in base all'importanza dei dati e al loro tasso di modifica.
- Test del ripristino: Verificare periodicamente la capacità di ripristinare i backup.
- Sicurezza: Conservare i backup in posizioni sicure e, se possibile, criptarli.
- Backup multipli: Conservare copie dei backup in più posizioni (on-site e off-site).
- Automazione: Utilizzare strumenti di automazione per pianificare e monitorare i backup.
- SQL Server Management Studio (SSMS):
- Interfaccia grafica per configurare backup e restore.
- Supporta pianificazione automatica di backup.
- MySQL Workbench:
- Supporta esportazioni e importazioni di database.
- pgAdmin (PostgreSQL):
- Interfaccia grafica per eseguire backup e restore.