Backup e ripristino del database PostgreSQL e MySQL | INTROSERV
EUR
european

EUR

usa

USD

Italy It
Ex. VAT Ex. VAT 0%

Backup e ripristino del database PostgreSQL e MySQL

Il backup è una delle procedure chiave che garantisce la sicurezza dei dati. Anche con un hosting affidabile, possono verificarsi errori dell'applicazione, aggiornamenti errati o cancellazioni accidentali dei dati.

In questa guida, mostreremo come creare e ripristinare backup di database PostgreSQL e MySQL utilizzando le utility standard da riga di comando — pg_dump e mysqldump.

1. Backup di PostgreSQL

1.1. Cos'è pg_dump

pg_dump è un'utilità standard di PostgreSQL per creare un backup logico del database. Salva sia la struttura (DDL) che i dati (DML) in un file SQL di testo che può essere utilizzato successivamente per il ripristino.

1.2. Sintassi del comando

pg_dump -U <user> -h <host> -p <port> -d <database> -F p -f <path_to_file.sql>

1.3. Esempio di backup

pg_dump -U myuser -h localhost -d mydatabase -F p -f /backups/mydatabase_$(date +%F).sql

Spiegazione dei parametri:

  • -U myuser — nome utente di PostgreSQL;
  • -h localhost — host del server (può essere specificato l'IP);
  • -d mydatabase — nome del database;
  • -F p — formato di output (plain — SQL regolare);
  • -f — percorso del file in cui verrà salvato il backup;
  • $(date +%F) — aggiunge la data corrente al nome del file (es. 2025-11-03).

1.4. Backup compresso

Per ridurre la dimensione del file, è possibile utilizzare la compressione gzip:

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

2. Ripristino del Database PostgreSQL

2.1. Utilizzando psql

Per ripristinare un database da un backup di testo, utilizzare:

psql -U myuser -d mydatabase -f /backups/mydatabase_2025-11-03.sql

Se il backup è compresso:

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | psql -U myuser -d mydatabase

2.2. Se il database non esiste

Creare prima un nuovo database:

createdb -U myuser newdatabase

psql -U myuser -d newdatabase -f /backups/mydatabase_2025-11-03.sql

3. Backup di MySQL

3.1. Cos'è mysqldump

mysqldump è un'utilità standard per creare dump di MySQL. Salva i comandi SQL necessari per ricreare le tabelle e inserire i dati.

3.2. Sintassi del comando

mysqldump -u <user> -p -h <host> <database> > <path_to_file.sql>

3.3. Esempio di backup

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

Spiegazione dei parametri:

  • -u myuser — nome utente di MySQL;
  • -p — richiede una password;
  • mydatabase — nome del database;
  • > — reindirizza l'output a un file.

3.4. Dump compresso

mysqldump -u myuser -p mydatabase | gzip > /backups/mydatabase_$(date +%F).sql.gz

4. Ripristino del Database MySQL

4.1. Ripristino da file SQL

mysql -u myuser -p mydatabase < /backups/mydatabase_2025-11-03.sql

4.2. Se il database non esiste

Creare un nuovo database prima del ripristino:

mysql -u myuser -p -e "CREATE DATABASE newdatabase;"

mysql -u myuser -p newdatabase < /backups/mydatabase_2025-11-03.sql

4.3. Ripristino da dump compresso

gunzip -c /backups/mydatabase_2025-11-03.sql.gz | mysql -u myuser -p mydatabase

5. Automazione e Raccomandazioni di Sicurezza

5.1. Backup Automatici con Cron

Per processi di backup regolari senza intervento manuale, impostare l'automazione utilizzando cron.

Configurazione base di cron:

# Apri l'editor di cron crontab -e

Aggiungi una riga, per esempio:

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

Questo comando eseguirà lo script giornalmente alle 2:00 AM.

Approccio avanzato utilizzando uno script. Creare /usr/local/bin/db_backup.sh:

#!/bin/bash DATE=$(date +%F) BACKUP_DIR="/backup/$DATE" mkdir -p $BACKUP_DIR # Backup di PostgreSQL pg_dump -U myuser mydatabase | gzip > $BACKUP_DIR/postgres_mydatabase.sql.gz # Backup di MySQL mysqldump -u myuser -p mydatabase | gzip > $BACKUP_DIR/mysql_mydatabase.sql.gz # Rimuovi backup più vecchi di 7 giorni find /backup/ -type f -mtime +7 -delete

Rendere lo script eseguibile:

chmod +x /usr/local/bin/db_backup.sh

E aggiungere a cron:

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

5.2. Raccomandazioni di Sicurezza e Archiviazione

  • Archiviazione fuori server: archiviare i backup in cloud storage (AWS S3, Google Cloud) o su unità esterne.
  • Controllo degli accessi: limitare l'accesso alla cartella /backups, poiché i file possono contenere dati riservati.

chmod 700 /backup

chmod 600 /backup/*.sql.gz

  • Verifica dell'integrità: eseguire ripristini di prova mensili per verificare la funzionalità del backup.
  • Riservatezza: i file di backup contengono contenuti del database — trattarli come informazioni riservate.

Conclusione

Utilizzare pg_dump e mysqldump è un modo semplice, affidabile e universale per eseguire il backup di database PostgreSQL e MySQL. Questi strumenti sono adatti sia per backup manuali che per processi automatizzati con il minimo sforzo.

I backup regolari sono la chiave per la stabilità del tuo progetto e la sicurezza dei dati.

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