Backup di PostgreSQL/MySQL su un servizio di archiviazione cloud | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Backup di PostgreSQL/MySQL su un servizio di archiviazione cloud

Introduzione

Il backup dei database è una delle procedure più importanti per garantire la sicurezza e l'affidabilità di siti web e applicazioni. La perdita di dati può verificarsi per molte ragioni: guasti al server, errori dell'amministratore, problemi di aggiornamento, malware o semplicemente errori umani. Effettuare backup regolari consente di ripristinare rapidamente il proprio progetto senza perdita di dati.

Questa guida spiega come eseguire il backup dei database PostgreSQL e MySQL, come archiviare i backup su un server Linux remoto utilizzando rsync o scp e come caricarli su un servizio di archiviazione cloud utilizzando rclone.

Backup di PostgreSQL

PostgreSQL mette a disposizione l’utilità standard pg_dump, che consente di creare una copia completa del database sotto forma di file SQL.

Esempio di creazione di un backup:

pg_dump -U myuser -h localhost mydatabase > /backup/mydatabase_$(date +%F).sql

Spiegazione dei parametri:

  • -U myuser — nome utente del database
  • -h localhost — indirizzo del server (può essere omesso se locale)
  • mydatabase — nome del database
  • /backup/... — percorso di destinazione
  • $(date +%F) — aggiunge la data corrente al nome del file

Per risparmiare spazio, comprimere immediatamente il backup:

pg_dump -U myuser mydatabase | gzip > /backup/mydatabase_$(date +%F).sql.gz

Per eseguire il backup di tutti i database presenti sul server:

pg_dumpall -U myuser | gzip > /backup/postgres_all_$(date +%F).sql.gz

Backup di MySQL

Per MySQL e MariaDB, utilizzare l'utilità mysqldump.

Esempio di backup di un singolo database:

mysqldump -u myuser -p mydatabase > /backup/mydatabase_$(date +%F).sql

Quando si esegue questo comando, il sistema richiederà la password dell'utente.

Per eseguire il backup di tutti i database:

mysqldump -u myuser -p --all-databases | gzip > /backup/mysql_all_$(date +%F).sql.gz

Per includere le procedure memorizzate e i trigger, aggiungere le opzioni --routines --triggers.

Backup su CloudBox

CloudBox di INTROSERV è una soluzione di archiviazione cloud che supporta diversi protocolli di connessione (tra cui rsync, scp, rsync su SSH, WebDAV). La facilità d’uso di CloudBox semplifica notevolmente le operazioni di caricamento, gestione e recupero dei dati.

È possibile utilizzarlo come posizione remota per l’archiviazione dei backup dei database. Di seguito sono riportati i dettagli di configurazione ed esempi di script.

Passaggio 1. Ottenere l’accesso a CloudBox

Ordina uno dei piani CloudBox disponibili sul nostro sito web — introserv.com

Dopo il pagamento, il servizio sarà disponibile in pochi minuti. Una volta attivato il servizio, riceverai i dettagli di connessione:

  • indirizzo del server (box#####.introserv.cloud)
  • nome utente (box#####) e password

Passaggio 2. Connessione e sincronizzazione tramite rsync o scp

Utilizzo di rsync (consigliato):

rsync -avz -e "ssh -p 22" /backup/ user@cloudbox-server:/path_to_cloudbackups/

Dove:

  • user — nome utente CloudBox
  • cloudbox-server — indirizzo di connessione
  • /path_to_cloudbackups/ — percorso su CloudBox

Per un funzionamento automatizzato, è consigliabile configurare le chiavi SSH:

  1. Generare una chiave pubblica:

    ssh-keygen -t rsa

  2. Copiare il contenuto del file della chiave pubblica creata, ad esempio /root/.ssh/id_rsa.pub, negli appunti.
  3. Vai alla sezione "Profilo" (passa il mouse sull'icona utente in alto a destra), aggiungi il contenuto della chiave nel campo "Chiavi pubbliche" e salva le impostazioni.

A questo punto, rsync funzionerà senza richiedere la password, il che è comodo per i cron job.

Alternativa — scp:

scp /backup/mysql_mydatabase.sql.gz user@cloudbox-server:/path_to_cloudbackups/

Passaggio 3. Connessione e sincronizzazione tramite rclone

Se desideri utilizzare rclone per interagire con CloudBox, configuralo come segue:

  1. Installa rclone:

    sudo apt install rclone

  2. Avvia la configurazione:

    rclone config

Durante l'installazione, seleziona:

  • n — per creare un nuovo nome remoto
  • , ad esempio cloudbox
  • tipo di archiviazione — scegliere sftp o ssh
  • inserire l'indirizzo del server nel formato box#####.introserv.cloud, il nome utente nel formato box#####, la porta (in questo caso la porta SSH — predefinita 22) e il percorso della directory
  • eseguire l’autenticazione (se richiesta)

Verifica la connessione:

rclone ls cloudbox:/path_to_cloudbackups/

Copia i dati di backup:

rclone copy /backup/ cloudbox:/db-backups/ --progress

Sincronizza eliminando i file mancanti localmente:

rclone sync /backup/ cloudbox:/db-backups/ --progress

Se necessario, crittografare i file prima del trasferimento:

rclone copy /backup/ cloudbox:/db-backups/ --progress --crypt

Passaggio 4. Esempio di script di automazione con CloudBox

Crea lo script /usr/local/bin/db_backup_cloudbox.sh, ad esempio:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Upload to CloudBox rsync -avz -e "ssh -p 22" $BACKUP_DIR/ user@cloudbox-server:/path_to_cloudbackups/$DATE/ # Upload to CloudBox (rclone option, uncomment if used) # rclone copy $BACKUP_DIR/ cloudbox:/db-backups/$DATE/ --progress # Remove backups older than 7 days find /backup/ -type f -mtime +7 -delete

Quindi aggiungere un'attività cron (nell'esempio, lo script viene eseguito ogni giorno alle 2:00 del mattino):

0 2 * * * /usr/local/bin/db_backup_cloudbox.sh

Considerazioni importanti:

  • Assicurarsi che la connessione a CloudBox sia stabile e che la larghezza di banda sia sufficiente.
  • Configurare il monitoraggio: verificare che i file vengano effettivamente copiati.
  • Verificare periodicamente il ripristino dai backup di CloudBox.
  • Quando si utilizzano dati riservati, valutare la possibilità di crittografare i backup.

Copia su un server Linux remoto tramite SSH

Se si desidera archiviare i backup non solo localmente ma anche su un altro server, utilizzare rsync o scp.

Utilizzo di rsync (consigliato, poiché copia solo le modifiche):

rsync -avz -e "ssh -p 22" /backup/ [email protected]:/remote_backups/

Spiegazione dei parametri:

  • user — nome utente sul server remoto
  • remote.server — indirizzo IP o nome di dominio del server remoto
  • /remote_backups/ — percorso in cui archiviare i backup

Per operare senza inserire la password, configurare le chiavi SSH:

# Generate SSH keys: ssh-keygen -t rsa # Copy key to remote server: ssh-copy-id [email protected]

A questo punto, rsync funzionerà senza richiedere la password, il che è comodo per i lavori cron.

Alternativa a rsync — utilizzo di scp:

scp /backup/mysql_mydb.sql.gz [email protected]:/remote_backups/

Copia su un servizio di archiviazione cloud tramite rclone

Se è necessario archiviare i backup nel cloud (Google Drive, Dropbox, Amazon S3, ecc.), utilizzare rclone — uno strumento universale per la sincronizzazione dei dati con vari servizi cloud.

Installazione:

sudo apt install rclone

Configurazione:

rclone config

Segui i passaggi della configurazione interattiva:

  • Selezionare n per creare una nuova connessione
  • Inserisci un nome, ad esempio " remote"
  • Selezionare il tipo di archiviazione (ad es. s3, drive, dropbox)
  • Inserisci le chiavi di accesso o autorizza tramite browser

Verifica la connessione:

rclone ls remote:path

Esempio di caricamento dei backup sul cloud:

rclone copy /backup/ remote:db-backups/ --progress

Comando di sincronizzazione (rimuove i file mancanti localmente):

rclone sync /backup/ remote:db-backups/ --progress

È anche possibile crittografare i file prima del caricamento:

rclone copy /backup/ remote:db-backups/ --progress --crypt

Sicurezza e controllo

  • Archivia i backup in almeno due posizioni: localmente e in remoto.
  • Verificare regolarmente che i backup vengano creati e caricati correttamente.
  • Eseguire ripristini di prova almeno una volta al mese.
  • Crittografare i file contenenti dati sensibili se si utilizzano cloud pubblici:

    gpg -c /backup/mysql_mydatabase.sql.gz

  • Assicurarsi che le autorizzazioni dei file per la cartella /backup siano corrette e proteggere le credenziali del database.

Ripristino dal backup

PostgreSQL:

gunzip < backup.sql.gz | psql -U myuser -d mydatabase

MySQL:

gunzip < backup.sql.gz | mysql -u myuser -p mydatabase

Conclusione

Il backup dei database PostgreSQL e MySQL è una procedura semplice ma di fondamentale importanza. Anche l'infrastruttura più affidabile non può proteggervi da errori umani o guasti tecnici. La strategia migliore consiste nell'effettuare backup automatici regolari, archiviati su almeno un server esterno e nel cloud, con test periodici di ripristino.

Utilizzando una combinazione di pg_dump, mysqldump, rsync, rclone e cron, è possibile creare un sistema di backup affidabile e completamente automatizzato senza ricorrere a software di terze parti a pagamento. Questo approccio è facile da implementare e adatto a tutti i sistemi Linux.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA