Salvare un database di Mysql
MySQL è un ottimo programma per database ed è anche molto usato. La maggior parte dei siti web si appoggiano a MySQL per salvare i dati: ad esempio WordPress memorizza gli articoli, le impostazioni e i commenti proprio in un DB di MySQL. In questo modo un database diventa anche importante: immaginate di aver scritto centinaia di post nel vostro blog e tutto ad un tratto il database si danneggia e tutto va perso. Cosa fare per evitare questo serio problema? Fare un backup del database. Vediamo come…
Partendo con l’utilità mysqldump che viene fornito con MySQL, passeremo in rassegna alcuni esempi usando mysqldump, tra cui il backup del database in un file, un altro server, e anche un file compresso gzip o bzip2.
Come salvare un database MySQL?
Per salvare un database di MySQL o fare un backup del DB, si può utilizzare il comando mysqldump. Nella forma più semplice, possiamo fare un dump del database di MySQL usando questo comando:
mysqldump wordpress_db > wordpress_db.sql -u root -p
Dove wordpress_db è il nome del database da salvare con mysqldump, wordpress_db.sql è il file output. L’opzione -u è seguita dal nome di un utente che può accedere al database e -p serve per richiedere la password che va digitata subito dopo lanciato il comando.
Il contenuto del file wordpress_db.sql è leggibile con un editor di testo e se il database è molto grande anche il file ottenuto peserà anche parecchi megabyte. Per questo motivo se si desidera archiviare il database oppure scaricarlo da Internet, è bene comprimerlo perché può arrivare anche a pesare meno di un decimo.
Il comando bzip2 consente di trasformare wordpress_db.sql in wordpress_db.sql.bz2 (l’originale va perso).
bzip2 wordpress_db.sql
Dopo l’esecuzione wordpress_db.sql non c’è più e compare un file chiamato wordpress_db.sql.bz2, questo può essere aperto con uno dei tanti strumenti per la gestione di archivi compressi come bunzip2 o WinZip (su Windows).
Se si desidera invece eseguire un comando solo si può usare gzip anziché bzip2.
mysqldump -u root -p password wordpress_db.sql | gzip -9 > wordpress_db.sql.gz
Dove password è la password dell’utente root.
Dove salvare il database di MySQL?
E’ bene scegliere un posto dove salvare il database di MySQL che sia sicuro per evitare di perdere i propri dati se si verifica qualche problema. Un’ottima idea è quella di conservare il file del database su un disco esterno oppure masterizzare il backup del DB su un CD-ROM di tanto in quanto.
Fare un backup del database MySQL
La forma più semplice non è la più adeguata in realtà. E’ bene aggiungere l’opzione –opt per fare un backup di MySQL più rapido, più sicuro e ripristinabile più velocemente.
mysqldump ––opt wordpress_db > wordpress_db.sql -u root -p
Inserendo ––opt verranno abilitare le funzionalità quick, add drop table, add locks, extended insert e lock tables.
Con ––quick le tabelle non sono bufferizzate ma vengono copiate direttamente, velocizzando il salvataggio del database. Aggiungendo ––add-drop-table al momento del ripristino se le tabelle esistono già, vengono eliminate. Con ––add-locks e ––ock-tables si evitano dump inconsistenti quando il database scrive su un elemento mentre si fa il salvataggio dello stesso.
Come programmare i backup del database?
Supponiamo di voler fare un backup giornaliero automatico di uno o di tutti i database. Ecco il comando che fa per noi:
/usr/bin/mysqldump ––opt ––all-databases -u root -p PASSWORD > db-`date +%Y-%m-%d`.sql
In questo caso con l’attributo ––all-databases vengono salvati tutti i database in MySQL. Il file avrà un nome variabile: se oggi è l’1 settembre 2012, il file si chiamerà db-2012-09-01.sql così i file di backup non saranno sovrascritti.
La procedura può essere automatizzata utilizzando il tool crontab che programma un cronjob: CronJob con CronTab.
Come ricaricare un database mysql?
Chiaramente può capitare di voler ripristinare il database in MySQL da un file di dump. Vediamo come è possibile importare un file di dump nel mio database MySQL. Il ripristino del MySQL è lavoro molto semplice.
Se il DB è stato archiviato con bzip2 possiamo scompattare l’archivio col comando:
bunzip2 wordpress_db.sql.gz
Comparirà nuovamente il file wordpress_db.sql e sparirà wordpress_db.sql.bz2
È possibile utilizzare il seguente comando per ripristinare il database degli account da file di backup wordpress_db.sql. Per fare ciò basta utilizzare il normale comando mysql.
mysql -u root -p password < wordpress_db.sql
La parola password va sostituita con la password dell’utente root.
Come recuperare database mysql cancellato?
Se non si possiede un salvataggio di backup di MySQL, è difficile recuperare un database cancellato o corrotto.
Come correggere un errore di Mysql?
Se si verifica il seguente errore:
mysqldump: Got error: 1016: Can’t open file: ‘WordPress-DB’ (errno: 145) when using LOCK TABLES
Dove WordPress-DB è il nome del database, si può risolvere col seguente comando:
mysqlcheck -r -u root -p WordPress-DB
Immettere la password dell’utente root di MySQL.