Il Backup e ripristino di un database mysql può essere fatto in diversi modi, ma in questo post vogliamo concentrarci sull’utilizzo di strumenti sempre disponibili in un server su cui gira MySQL.
Gli esempi seguenti fanno sempre riferimento a comandi lanciati direttamente sulla macchina in cui gira il server MySQL e via shell.
L’utente mysql con cui vengono lanciati i comandi deve avere i permessi per effettuare il backup e il ripristino dei database all’interno del server mysql.
Backup
Attraverso l’utility mysqldump è possibile effettuare il dump di un database o di una collezione di database; il file ottenuto contiene tutte le istruzioni SQL necessarie per ricreare le tabelle e/o popolarle di dati. mysqldump può essere usato per esportare i dati di un database all’interno di file SQL, CSV o XML.
Con questo comando possiamo effettuare il backup di un singolo database mysql
mysqldump -u nomeutente -p database_da_copiare > backup.sql
Aggiungendo l’opzione –databases possiamo effettuare il backupdi più database in contemporanea
mysqldump -u nomeutente -p --databases database_uno database_due database_tre > backup.sql
Con l’opzione –all-databases possiamo esportare tutti i database del server mysql
mysqldump -u nomeutente -p --all-databases > backup.sql
Con il comando seguente possiamo effettuare il backup di una singola tabella di un database
mysqldump -u nomeutente -p database_da_copiare nome_tabella > backup.sql
Con l’opzione gzip possiamo comprimere il backup effettuato
mysqldump -u nomeutente -p database_da_copiare | gzip -9 > backup.sql.gz
Ripristino
Per ripristinare il backup di un database mysql possiamo usare il seguente comando, sempre da shell sulla macchina in cui gira il server MySQL
mysql -u nomeutente -p < backup.sql
Prima di effettuare il ripristino è bene controllare che nel file backup.sql sia presente il comando per la creazione del database. Se non fosse presente basterà aggiungere queste due righe in cima al file backup.sql
;Creo il database CREATE DATABASE nomedatabase; ;Seleziono il database USE nomedatabase;
Il comand seguente permette di ripristinare il backup compresso
gunzip < backup.sql.gz | mysql -u nomeutente -p