L'altro giorno ho avuto la necessità di migrare un database mysql da un server ad un altro.
Normalmente, se i dati non sono troppi, è possibile compiere questa operazione esportando ed importando dei dump da phpmyadmin, se però il database è grosso diversi giga e contiene file blob per gli allegati, allora questa procedura non è utilizzabile.
Per fortuna però, è possibile esportare una copia esatta del database da riga di comando, salvando già direttamente il file sul nuovo server.
Vediamo subito come fare.
Per poter clonare un database mysql, facendo un dump puntuale dei dati, basta seguire i seguenti passaggi:
Quando la copia del database mysql sarà terminata, il cmd restituirà semplicemente la possibilità di digitare altri comandi, senza un vero e proprio messaggio di conferma copia avvenuta, se però andrete a vedere nel percorso indicato, troverete il file con estensione .sql contenente la copia del database mysql.
Per importare un database mysql grosso, dopo averlo esportato con la comoda funzione mysqldump sarà necessario importarlo nel nuovo server con il seguente comando:
mysqldump -u nome-utente -p test > C:\percorso\file.sql
Come nel caso dell'import, il prompt dei comandi risulterà bloccato fino a che l'operazione non sarà terminata (e a seconda del peso potrebbero volerci anche molti minuti), ma una volta finito, il database mysql sul nuovo server sarà identico a quello del server di provenienza e potrete sfogliarlo e fare le verifiche del caso con phpmyadmin.
Questa era la procedura corretta per duplicare un database mysql pesante.
Non provate invece a copiare brutalmente i file contenuti nella cartella data di mysql, perchè la cosa potrebbe non funzionare correttamente anche se prima stoppate mysql.
Da ora in poi l'export e l'import di database mysql grandi non sarà più un problema, basta solo avere una buona banda ed un po' di pazienza.
Normalmente, se i dati non sono troppi, è possibile compiere questa operazione esportando ed importando dei dump da phpmyadmin, se però il database è grosso diversi giga e contiene file blob per gli allegati, allora questa procedura non è utilizzabile.
Per fortuna però, è possibile esportare una copia esatta del database da riga di comando, salvando già direttamente il file sul nuovo server.
Vediamo subito come fare.
Come esportare un database Mysql grande da riga di comando
Per poter clonare un database mysql, facendo un dump puntuale dei dati, basta seguire i seguenti passaggi:
- Aprire il prompt dei comandi di dos (se si è su windows)
- Posizionarsi nel percorso in cui è presente l'eseguibile di mysql con il comando:
cd C:\wamp64\bin\mysql\mysql8.0.16\bin
Dove ovviamente va indicato il path del proprio mysql - Digitare il seguente comando e premere invio:
mysqldump -u nome-utente -p nome-db > C:\percorso\file.sql
Quando la copia del database mysql sarà terminata, il cmd restituirà semplicemente la possibilità di digitare altri comandi, senza un vero e proprio messaggio di conferma copia avvenuta, se però andrete a vedere nel percorso indicato, troverete il file con estensione .sql contenente la copia del database mysql.
Come importare un database Mysql grande da riga di comando
Per importare un database mysql grosso, dopo averlo esportato con la comoda funzione mysqldump sarà necessario importarlo nel nuovo server con il seguente comando:
mysqldump -u nome-utente -p test > C:\percorso\file.sql
Come nel caso dell'import, il prompt dei comandi risulterà bloccato fino a che l'operazione non sarà terminata (e a seconda del peso potrebbero volerci anche molti minuti), ma una volta finito, il database mysql sul nuovo server sarà identico a quello del server di provenienza e potrete sfogliarlo e fare le verifiche del caso con phpmyadmin.
Questa era la procedura corretta per duplicare un database mysql pesante.
Non provate invece a copiare brutalmente i file contenuti nella cartella data di mysql, perchè la cosa potrebbe non funzionare correttamente anche se prima stoppate mysql.
Da ora in poi l'export e l'import di database mysql grandi non sarà più un problema, basta solo avere una buona banda ed un po' di pazienza.