Esportare un database da riga di comando con mysqldump

mysqldump è un programma molto utile per effettuare un backup logico di uno o più database MySQL o MariaDB. Tutto quello che fa è esportare una successione di query (come INSERT INTO ..) leggendo rigo-per-rigo le tabelle e scriverle in un file .sql che può essere poi importato in seguito in un altro database. Naturalmente con mysqldump possiamo scegliere anche un formato diverso, come CSV o XML: uno dei vantaggi è che, avendo un singolo file, possiamo modificarlo prima di importarlo o prima di effettuare qualche test.

A livello di performance, fare un backup con mysqldump non è un processo che impegna a fondo la CPU perché usa un single thread. Significa, cioè, che possiamo effettuare un backup anche con un server in produzione, anche sotto carico pesante senza problemi.

Backup di un singolo database

La sintassi del comando base, da usare nella shell, è:

Vedremo, in questo articolo, vari esempi per diverse condizioni di utilizzo. Ricordiamoci che sarà sempre necessario fornire l’username e la password dei database che stiamo esportando.

In questo esempio stiamo effettuando il backup del database NOME_DATABASE. Da notare che è necessario specificare l’utente UTENTE_DATABASE che ha i permessi di accesso al NOME_DATABASE e la password che va indicata senza spazio -pPASSWORD_DATABASE.

Non avendolo specificato nel comando, di default mysqldump si connetterà a localhost.

In questo caso, nel file backup.sql avremo un backup completo.

Backup di tutti i database

Nel caso vogliamo fare il backup di tutti database possiamo indicare l’opzione --all-databases:

Backup di database selezionati

Nel caso vogliamo fare il backup di più database possiamo indicare l’opzione ---databases seguita dai nomi dei database separati da spazio:

Backup di un database remoto

Negli esempi precedenti abbiamo dato per scontato che il server fosse localhost, in sostanza abbiamo eseguito mysqldump sullo stesso server su cui si trova il database. Ci viene data, però, la possibilità anche di eseguire il backup di un database remoto. Questo è molto utile quando vogliamo, per esempio dal nostro computer, eseguire velocemente il backup di un database che si trova, appunto, in remoto e avere il file già sul nostro computer. Per farlo, è sufficiente specificare l’hostname del server con l’opzione --host=HOSTNAME_DATABASE:

Attenzione: è necessario che il server database accetti connessioni dall’esterno!

Anche se i tre casi proposti copriranno probabilmente il 90% delle vostre esigenze, sono disponibili molte altre opzioni sulla documentazione ufficiale.

Buon backup!