Come eseguire il backup e il ripristino di un database MySQL
Se memorizzi i dati in un database MySQL e vuoi evitare di perderli, devi eseguire regolarmente dei backup. Questo articolo ti insegnerà come creare rapidamente backup e ripristinarli nel database MySQL tramite la console. Inoltre, potrai trasferire i dati su un altro server.
- Come creare un backup tramite riga di comando (usando mysqldump)
- Come creare un backup del database MySQL con compressione
- Come ripristinare un database MySQL da un backup
- Backup e ripristino tramite Adminer
Come creare un backup tramite riga di comando (usando mysqldump)
Se hai accesso al server tramite console (SSH), puoi creare e ripristinare backup molto rapidamente. Questo metodo ti consente di creare un dump del database (un dump è una versione testuale del DB) e ripristinarlo più velocemente rispetto a phpMyAdmin, Adminer o altri strumenti. Il dump del database consiste in una serie di comandi SQL che consentono di ricreare una copia del tuo database. Ecco il comando per creare il dump:
$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] - nome utente del database (ad esempio root)
[pass] - password dell’utente; può essere scritta senza spazi se non contiene caratteri speciali, ad esempio -proot, -ppassword
[dbname] - nome del tuo database
[backupfile.sql] - nome del file in cui verrà salvato il backup
[--opt] - opzione del comando mysqldump, facoltativa
Supponiamo che tu abbia un database Drupal, un utente root con password “password” e desideri chiamare il file di backup “backup.sql”. Il comando sarà:
$ mysqldump -u root -ppassword DrupalDB > backup.sql
Se vuoi omettere la password o se contiene spazi o caratteri speciali (#!,-_), dovrai inserirla separatamente dopo aver eseguito il comando:
$ mysqldump -u root -p DrupalDB > backup.sql
Puoi anche eseguire il backup di singole tabelle, elencandole separate da spazi, ad esempio “nodes” e “users”:
$ mysqldump -u root -p DrupalDB nodes users > backup.sql
Oltre a eseguire il backup di tabelle specifiche, puoi salvare più database contemporaneamente utilizzando l’opzione --databases, seguita dai nomi dei database separati da spazi:
$ mysqldump -u root -p --databases DrupalDB Drupal7 Drupal8 > backup.sql
Se desideri trasferire l’intero server MySQL, puoi copiare tutti i database con l’opzione --all-databases:
$ mysqldump -u root -p --all-databases > alldb_backup.sql
Il comando mysqldump ha anche alcune opzioni utili:
--add-drop-table - aggiunge comandi DROP TABLE prima di ogni CREATE TABLE nel dump, eliminando le tabelle esistenti prima di ripristinarle.
--no-data - esporta solo la struttura del database senza i dati. Utile, ad esempio, per copiare le tabelle cache di Drupal, che spesso contengono centinaia di migliaia di record inutili.
--add-locks - aggiunge i comandi LOCK TABLES e UNLOCK TABLES. Se il database è molto grande, le tabelle potrebbero restare bloccate per un certo tempo.
Come creare un backup del database MySQL con compressione
Questo è probabilmente il metodo più efficiente, poiché consente di ridurre le dimensioni del backup anche di 10–20 volte, rendendo gestibili anche i dump di database molto grandi. Per comprimere useremo il comando gzip:
$ mysqldump -u root -p DrupalDB | gzip -9 > backup.sql.gz
Se vuoi decomprimere il file (non ripristinare il database, solo estrarlo), usa questo comando:
$ gunzip backup.sql.gz
Come ripristinare un database MySQL da un backup
Per ripristinare un database da un dump, ti serve un database vuoto. Puoi eliminare le tabelle tramite Adminer o phpMyAdmin. Se hai usato l’opzione --add-drop-table, le tabelle verranno eliminate e ricreate automaticamente, quindi non serve cancellarle prima. Ecco il comando per ripristinare il database dal dump:
$ mysql -u root -p DrupalDB < backup.sql
Se il backup è compresso, usa questo comando:
gunzip < backup.sql.gz | mysql -u root -p DrupalDB
Backup e ripristino tramite Adminer (alternativa a PhpMyAdmin)
Adminer è un’alternativa a PhpMyAdmin. Offre le stesse funzionalità ma in un unico piccolo file, molto comodo da usare:
Basta copiare il file nella directory principale del sito e aprirlo nel browser:
http://nome_del_tuo_sito/adminer-4.2.1.php (puoi rinominarlo in adminer.php per comodità):
Accedi e seleziona il database desiderato, ad esempio Drupal7.
Ora fai clic su “Esporta (Dump)” per scaricare i dati. Puoi anche escludere le tabelle cache o altri dati non necessari:
Per caricare nuovamente il dump, usa la scheda “Importa (Import)”: