Automatizzare il backup dei propri database MySQL su Windows e su Linux

Il backup di un database MySQL è un’operazione molto importante che soprattutto per un sito di livello medio/alto andrebbe effettuata anche giornalmente. In questo articolo vedremo come questo tipo di operazione sia facilmente automatizzabile attraverso la schedulazione di un semplice script da linea di comando, sia che utilizziate un server Linux che Windows.
Procedura per il backup di un database MySQL su Linux
- Create un file “/root/backup/backup.sh” e assicuratevi di assegnargli i permessi di esecuzione con il comando:
chmod +x backup.sh
- Aprite il file “backup.sh” con il vostro editor preferito ed utilizzate la seguente sintassi per ogni DB da includere nella procedura di backup automatizzato:
mysqldump -u[USERNAME] -p[PASSWORD] –-opt [DATABASE NAME] > [BACKUPFILE]
Ecco come si presenta il contenuto di un file backup.sh di esempio che effettua il backup di due database:
mysqldump -uUser1 -pPassword1 --opt Database1 > /root/backup/Database1.sql mysqldump -uUser2 -pPassword2 --opt Database2 > /root/backup/Database2.sql dt=`date +%y%m%d` tar cvf /root/backup/sqlbackup-$dt.tar /root/backup/*
- Schedulate l’esecuzione del backup in modo che sia effettuato giornalmente (a mezzanotte) lanciando il comando:
crontab -e
ed inserendo la riga:
00 00 * * * root sh /root/backup/backup.sh
Procedura per il backup di un database MySQL su Windows
- Create un file “c:\backup\backup.bat“, apritelo con il vostro editor preferito e utilizzate la seguente sintassi per ogni DB da includere nella procedura di backup automatizzato:
mysqldump -u[USERNAME] -p[PASSWORD] –-opt [DATABASE NAME] > [BACKUPFILE]
Ecco come si presenta il contenuto di un file backup.bat di esempio che effettua il backup di due database:
set dt=%date:~6,4%-%date:~3,2%-%date:~0,2% mysqldump -uUser1 -pPassword1 --opt Database1 > c:\backup\Database1-%dt%.sql mysqldump -uUser2 -pPassword2 --opt Database2 > c:\backup\Database2-%dt%.sql
[Attenzione: il comando prevede la generazione di un file di backup con la data odierna aggiunta in maniera automatica nel formato "YYYY-MM-DD" ed è relativo ad un sistema operativo configurato per la lingua italiana.]
- Schedulate l’esecuzione del backup in modo che sia effettuato giornalmente (a mezzanotte) lanciando il comando:
AT 00:00 /EVERY:m,t,w,th,f,s,su c:\backup\backup.bat
A questo punto non dovete far altro che storicizzare (magari su nastro o CD) i files di backup generati.
L’unica differenza reale tra le due procedure è il fatto che su nel primo caso viene creato anche un archivio compresso attraverso il comando tar normalmente disponibile su Linux. Per ottenere un effetto analogo su Windows dovete installare un’utility di compressione come WinZip o Compact (dal resource kit).
Iscriviti alla newsletter per ricevere in tempo reale tutte le notizie e gli aggiornamenti!











ciao,
sto provando a implementare questo file .bat con questi comandi
dt=%date:~6,4%-%date:~3,2%-%date:~0,2%
mysqldump -uroot -p12345 –opt sql1_db_1 > c:\inetpub\wwwroot\archivi\Database1-%dt%.sql
ma mi vien fuori un file con 0Kb e il cui nome non registra la variabile dt
praticamente il nome è Database1-.sql senza i riferimenti cronologici
mi dai una dritta? grazie daniele.
@daniele: verifica cosa ti compare se da prompt lanci il comando:
echo %date:~6,4%-%date:~3,2%-%date:~0,2%
lo scrivo da prompt di dos (scusa se lo specifico ma non sono molto pratico e non vorrei sbagliare) mi vien fuori 2008-09-05
credo sia corretto
rettifica:
il fatto che veniva fuori un file con contenuto 0Kb l’ho risolto mettendo lo script all’interno della cartella Mysql\bin dove si trova il programma mysqldump
ho provato a mettere il file .bat nella cartella del mio programma, indicandogli per esteso il percorso, ma non va!
ora resta il problema che non scrive la data. c’è soluzione???