1
contributo
(→Lo script: fix sintassi) |
|||
(35 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}} | |||
== Introduzione == | |||
Attraverso lo [[script]] riportato di seguito è possibile effettuare il backup di tutti i database presenti nella nostra installazione di MySQL. Lo script (basato sull'originale<sup>[[#Collegamenti esterni| [1]]]</sup> presente su cyberciti.biz<sup>[[#Collegamenti esterni| [2]]]</sup>) permette la personalizzazione attraverso i parametri: | |||
Attraverso lo script riportato di seguito è possibile effettuare il backup di tutti i database presenti nella nostra installazione di MySQL. Lo script (basato sull'originale presente su | |||
<pre> | <pre> | ||
MyUSER="utente_MySQL" # USERNAME | MyUSER="utente_MySQL" # USERNAME | ||
Riga 16: | Riga 12: | ||
IGGY="test" | IGGY="test" | ||
</pre> | </pre> | ||
La variabile < | La variabile <code>'''DEST'''</code> permette di impostare la directory di destinazione del backup. I database saranno salvati all'interno di una sottodirectory chiamata <code>mysql</code>.<br/> | ||
La variabile < | La variabile <code>'''IGGY'''</code> permette di indicare quali database devono essere esclusi dal processo di backup. | ||
== Lo script == | |||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
Riga 31: | Riga 27: | ||
# This is a free shell script under GNU GPL version 2.0 or above | # This is a free shell script under GNU GPL version 2.0 or above | ||
# Copyright (C) 2004, 2005 nixCraft project | # Copyright (C) 2004, 2005 nixCraft project | ||
# ------------------------------------------------------------------------- | # ------------------------------------------------------------------------- | ||
# This script is part of nixCraft shell script collection (NSSC) | # This script is part of nixCraft shell script collection (NSSC) | ||
Riga 38: | Riga 33: | ||
MyUSER="utente_MySQL" # USERNAME | MyUSER="utente_MySQL" # USERNAME | ||
MyPASS="Password_Utente | MyPASS="Password_Utente" # PASSWORD | ||
MyHOST="localhost" # Hostname | MyHOST="localhost" # Hostname | ||
Riga 97: | Riga 92: | ||
done | done | ||
</pre> | </pre> | ||
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio: | Per non intasare il server e eliminare i backup vecchi è possibile mettere in <code>crontab</code> uno script simile al seguente, che cancella i file di backup più vecchi di sette giorni: | ||
===Per | <pre> | ||
find /backup/mysql -type f -mtime +7 -exec rm {} \; | |||
</pre> | |||
== Esecuzione automatica dello script == | |||
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio [[Utilizzo_del_servizio_di_scheduling_Cron| la guida su Cron]]) permette un backup automatizzato dei database di MySQL senza la necessità di interrompere il servizio. | |||
== Uno script alternativo == | |||
Quello che segue è uno script alternativo, suggerito dall'utente '''mm-barabba''' di debianizzati.org. | |||
<pre> | |||
# Back Up Mysql Database phproject By oTTo | |||
#!/bin/bash | |||
FILE=/dove/voglio/backuppare/name_backup | |||
NAME=utente_sql | |||
PASS=password_sql | |||
DB=nome_DB | |||
echo "Content-type: text/plain" | |||
echo | |||
echo "Tried to export file: "$FILE | |||
#eliminare il commmento a seconda del risultato che si vuole ottenere | |||
#dump non compresso | |||
#mysqldump --quote-names -u $NAME --password=$PASS $DB > $FILE.sql | |||
#dump compresso con gzip | |||
#mysqldump --quote-names -u $NAME --password=$PASS $DB| gzip -9 > $FILE.sql.gz | |||
</pre> | |||
Lo script permette il backup del database specificato nella variabile <code>DB</code>.<br/> | |||
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio [[Utilizzo_del_servizio_di_scheduling_Cron|la guida su Cron]]) permette un backup automatizzato dei database di MySQL senza la necessità di interrompere il servizio. | |||
<!-- Nascondo terzo script | |||
== Un terzo script == | |||
Lo script seguente effettua il backup di tutti i database presenti sul server e imposta una rotazione che conserva gli ultimi 4 backup salvati. | |||
<pre> | |||
#!/bin/bash | |||
#Simple mySQL backup script for cron – updated version | |||
# Modify the following to suit your environment | |||
export DB_BACKUP="/home/user/mysql_backup" | |||
export DB_USER="root" | |||
export DB_PASSWD="***********" | |||
export DATE="'date +”%d%b"'" | |||
export MYSQL="/usr/bin/mysql" | |||
export MYSQLDUMP="/usr/bin/mysqldump" | |||
# Backup part | |||
echo "mySQL_backup" | |||
echo "———————-" | |||
echo "* Rotating backups…" | |||
rm -rf $DB_BACKUP/04 | |||
mv $DB_BACKUP/03 $DB_BACKUP/04 | |||
mv $DB_BACKUP/02 $DB_BACKUP/03 | |||
mv $DB_BACKUP/01 $DB_BACKUP/02 | |||
mkdir $DB_BACKUP/01 | |||
cd $DB_BACKUP/ && cd $DB_BACKUP/01 | |||
$MYSQL -u $DB_USER –password=$DB_PASSWD -Bse 'show databases' |while read m; \ | |||
do $MYSQLDUMP -u $DB_USER –password=$DB_PASSWD 'echo $m' > 'echo $m'.sql;done | |||
bzip2 *sql | |||
echo "* Creating new backup…" | |||
echo "Backup done! 'date'" > /tmp/my_report.log | |||
# You can set the script to send you mail when backup it’s finished. | |||
mail -s "MySql Backup report" you@yourmail.com < /tmp/my_report.log | |||
echo "----------------------" | |||
echo "Done" | |||
exit 0 | |||
</pre> | |||
--> | |||
== Backup manuale == | |||
Nel caso si volesse effettuare un backup manuale di uno specifico database, è possibile utilizzare il comando: | |||
<pre> | |||
# mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump | |||
</pre> | |||
Per esportare tutti i database del server: | |||
<pre> | |||
# mysqldump -u root -p -all-databases > dump.sql | |||
</pre> | |||
Per esportare solo la struttura di un database: | |||
<pre> | |||
# mysqldump -u root -p -no-data nome_database > dump.sql | |||
</pre> | |||
Per esportare solo i dati di un database: | |||
<pre> | |||
# mysqldump -u root -p –no-create-info nome_database > dump.sql | |||
</pre> | |||
== Ripristino del database == | |||
Il ripristino potrà essere effettuato con il comando: | |||
<pre> | |||
# mysql -u [username] -p [database_name] < [backup_file].dump | |||
</pre> | |||
Oppure con la sequenza: | |||
<pre> | |||
# mysql -u root -p | |||
Enter Password | |||
mysql> use database_name | |||
Database changed | |||
mysql> source [backup_file].dump | |||
</pre> | |||
== Per approfondimenti == | |||
[[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]<br> | [[Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5]]<br> | ||
[[Backup di MySQL tramite script]]<br> | [[Backup di MySQL tramite script]]<br> | ||
[[Configurare MySQL per accettare connessioni remote]]<br> | [[Configurare MySQL per accettare connessioni remote]]<br> | ||
<br/> | |||
: [[Utente:Ferdybassi|Ferdybassi]] | == Collegamenti esterni == | ||
-- | [1] [http://bash.cyberciti.biz/backup/backup-mysql-database-server-2/ script originale]<br/> | ||
[[Categoria: | [2] [http://bash.cyberciti.biz/ bash.cybercity.biz] | ||
[[Categoria: | |||
{{Autori | |||
|Autore = [[Utente:Ferdybassi|Ferdybassi]] | |||
|Estesa_da = | |||
: [[Utente:Mm-barabba|Mm-barabba]] | |||
}} | |||
[[Categoria:Bash Scripting]] | |||
[[Categoria:Database server]] | |||
[[Categoria:Backup&restore]] |
contributo