1,496 21/03/2026 07/04/2026 3 min

Automatizzare il Backup di MySQL con Cron su un VPS di Produzione

Introduzione

Gestire un VPS con un database MySQL richiede attenzione alla sicurezza dei dati. La perdita di informazioni critiche può essere devastante per un'azienda. Automatizzare i backup è una delle soluzioni più efficaci per garantire la disponibilità dei dati in caso di emergenze.

Prerequisiti

  • Un server VPS con Ubuntu 20.04 o simile
  • Accesso root o privilegi sudo
  • MySQL già installato e configurato
  • Conoscenza di base della linea di comando

Step 1: Creare uno Script di Backup

Il primo passo è creare uno script bash che esegua il backup del database. Questo script utilizzerà il comando mysqldump per esportare i dati.

#!/bin/bash

# Configurazione
DB_NAME="nome_database"
DB_USER="utente"
DB_PASS="password"
BACKUP_DIR="/percorso/del/backup"
DATE=$(date +%F)

# Comando di backup
mysqldump -u $DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql

# Output: nessun errore in console

Perché funziona: mysqldump crea un file SQL contenente tutte le istruzioni necessarie per ricostruire il database.

Nota cross-distro:

Il comando mysqldump è disponibile su tutte le distribuzioni principali di Linux.

Step 2: Rendere Eseguibile lo Script

È necessario rendere eseguibile lo script creato nel passo precedente.

chmod +x /percorso/del/backup/backup.sh

# Output: nessun errore in console

Perché funziona: Il comando chmod modifica i permessi del file per consentirne l'esecuzione.

Step 3: Configurare Cron per Eseguire il Backup Automaticamente

Ora dobbiamo configurare Cron per eseguire lo script di backup a intervalli regolari.

crontab -e

Aggiungi la seguente riga per eseguire il backup ogni giorno a mezzanotte:

0 0 * * * /percorso/del/backup/backup.sh

# Output: nessun errore in console

Perché funziona: Cron esegue automaticamente lo script secondo la pianificazione specificata.

Warning:

Assicurati che il percorso del backup sia accessibile e che ci sia spazio sufficiente sul disco.

Verifica Finale

Puoi verificare se il backup è stato eseguito correttamente controllando il contenuto della cartella di backup:

ls /percorso/del/backup

# Output atteso: nome_database-YYYY-MM-DD.sql

Interpretazione: Se il file è presente, il backup è stato eseguito con successo.

Troubleshooting

  • Errore: mysqldump: Got error: 1045: Access denied for user 'utente'@'localhost' (using password: YES)
    Causa: Credenziali MySQL errate.
    Soluzione: Controlla il file di configurazione e assicurati che l'utente e la password siano corretti.
  • Errore: bash: /percorso/del/backup/backup.sh: Permission denied
    Causa: Permessi dello script non corretti.
    Soluzione: Esegui chmod +x /percorso/del/backup/backup.sh.
  • Errore: mysqldump: Couldn't execute 'SHOW VARIABLES LIKE 'character_set%': Table 'mysql.general_log' doesn't exist
    Causa: Il log generale di MySQL non è attivo.
    Soluzione: Controlla le configurazioni di MySQL e attiva il log generale se necessario.

Conclusione

Hai creato un sistema di backup automatico per il tuo database MySQL su un VPS. Questo approccio riduce il rischio di perdita di dati e semplifica la gestione del database. Il prossimo passo è considerare di implementare un sistema di monitoraggio per verificare l'integrità dei backup e la loro esecuzione regolare.