Tutorial > Come esportare e importare grandi database MySQL

Come esportare e importare grandi database MySQL

Pubblicato il: 15 luglio 2020

Database MySQL

Introduzione

Quando si ha a che fare con i database MySQL può sorgere la necessità di effettuare dei backup per evitare la perdita dei dati, soprattutto se si tratta di database di grandi dimensione.

Per esportare queste informazioni ci si può avvalere dei “dump” tramite i quali è possibile conservare una copia dei dati in un file di backup, che può essere utilizzato per ripristinare il database in caso di malfunzionamento della macchina o per trasferire gli stessi dati da una macchina a un’altra.

In questo tutorial imparerai a esportare grandi database MySQL (o MariaDB) e vedrai anche come poterli importare in un’altra struttura dati.

Prerequisiti

Per effettuare questa operazione è necessario che siano soddisfatte queste 3 condizioni:

  • Poter accedere (direttamente o via SSH) al server Linux sul quale è installato MySQL (o MariaDB);
  • Conoscere il nome del database da esportare;
  • Avere i dati di accesso a tale database (se previsti).
Per iniziare dovrai connetterti al tuo server tramite una connessione SSH. Se non l’hai ancora fatto, ti consigliamo di seguire la nostra guida per connetterti in sicurezza con il protocollo SSH. In caso di server locale puoi passare al punto successivo e aprire il terminale del tuo server.

Esportazione del database

Sia MySQL che MariaDB non forniscono uno strumento che permetta di effettuare direttamente una copia del database, di conseguenza bisogna “acquisire” il database eseguendo un “dump” dello stesso. L’operazione di “dump” del database ti permette di salvare tutto il contenuto delle tabelle in un file .SQL.

Proprio perché il file di dump potrebbe occupare molto spazio sul disco, in relazione alla quantità di dati da dover salvare, è buona norma comprimerne il contenuto all’interno di un archivio zip.

Spostati quindi all’interno della cartella nella quale vuoi salvare il database:

cd /path/your_folder

N.B. Sostituisci “/path/your_folder” con il percorso della tua cartella.

Digita quindi il seguente comando per iniziare a esportare il tuo database:

mysqldump -u username -p my_big_database | gzip > backup.sql.gz

Così facendo utilizzerai il client “mysqldump” che si occuperà di estrarre i dati immagazzinati nel tuo database.

N.B. Nell’istruzione presta attenzione a sostituire il campo “username” con l’username dell’utente che può far accesso a quel database, “my_big_database” con il nome del database da esportare e “backup” con il nome da voler associare al file di backup. Ti suggeriamo di indicare nel nome del backup anche la data di esecuzione dello stesso.

Una volta eseguito il comando, ti verrà richiesto di inserire la password di accesso a MySQL (o MariaDB) prevista per l’utente indicato. L’operazione può richiedere più o meno tempo in relazione alla quantità di informazioni da dover esportare.

Una volta terminata l’operazione avrai tutti i dati esportati nell’archivio “backup.sql.gz”.

Importazione del database

Per importare il database precedentemente salvato, bisogna innanzitutto decomprimere l’archivio in proprio possesso. Analogamente a come fatto prima, recati nel percorso in cui intendi estrarre l’archivio e digita:

gzip -d backup.sql.gz

N.B. Se hai sostituito “backup” con un altro nome, assicurati di cambiarlo al fine di indicare l’archivio corretto.

A questo punto non resta che entrare in MySQL (o MariaDB), creare il nuovo database e importarne il contenuto. Digita quindi:

mysql -u user -p

N.B. Sostituisci il campo “user” con il nome dell’utente autorizzato ad accedere alla shell e che abbia privilegi per creare un nuovo database. In alternativa puoi entrare come utente root (se ti è concesso) mediante:

sudo mysql

Ora che sei all’interno della shell, puoi iniziare a creare il nuovo database nel quale importare i dati. Digita quindi:

CREATE DATABASE restored_db;

Questo comando creerà il database “restored_db”: sostituiscilo con un nome a tua scelta. È importante comunque che non vi sia già un database con quel nome: in tal caso otterresti un messaggio di errore e dovrai ripetere l’operazione indicando un nuovo nome.

Per verificare quali database siano già presenti, puoi utilizzare:

SHOW DATABASES;
Ora devi indicare a MySQL (o MariaDB) che tutte le future operazioni dovranno essere eseguite all’interno di quel database.
USE restored_db;

Infine importa i dati tramite:

SOURCE /path/file.sql;

N.B. sostituisci “/path/file.sql” con il percorso preciso del file estratto.

Verifica che la copia dei dati è avvenuta correttamente, utilizzando i seguenti comandi:

USE your_old_db;
SHOW TABLES
USE your_new_db;
SHOW TABLES

N.B. Sostituisci chiaramente “your_old_db” e “your_new_db” rispettivamente con il nome del database di origine e di destinazione.

Potrai notare come, senza che tu abbia dovuto manualmente importare tutte le tabelle, queste siano presenti sia nel vecchio che nel nuovo database. 

Conclusioni

Se hai eseguito tutti i passaggi di questa guida, hai imparato a effettuare correttamente il backup di un database MySQL e a importalo in una nuova struttura dati.

Una buona norma è quella di effettuare questo tipo di backup con regolarità al fine di non rischiare di perdere dati importanti. In tal caso, si potrebbero sfruttare le potenzialità di Cron, strumento di cui abbiamo parlato nel tutorial su Come gestire le operazioni pianificate con Crontab.