4 069
contributi
Nessun oggetto della modifica |
|||
(23 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1: | Riga 1: | ||
{{Versioni compatibili| | {{Versioni compatibili|Squeeze|Wheezy|Jessie|Stretch}} | ||
= | == Introduzione == | ||
=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 15: | ||
La variabile <code>'''IGGY'''</code> permette di indicare quali database devono essere esclusi dal processo di backup. | La variabile <code>'''IGGY'''</code> permette di indicare quali database devono essere esclusi dal processo di backup. | ||
=Lo script= | == Lo script == | ||
<pre> | <pre> | ||
#!/bin/bash | #!/bin/bash | ||
Riga 28: | 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 94: | Riga 92: | ||
done | done | ||
</pre> | </pre> | ||
=Esecuzione automatica dello script= | 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: | ||
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio | <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= | == Uno script alternativo == | ||
Quello che segue è uno script alternativo, suggerito dall'utente '''mm-barabba''' di debianizzati.org. | Quello che segue è uno script alternativo, suggerito dall'utente '''mm-barabba''' di debianizzati.org. | ||
<pre> | <pre> | ||
Riga 103: | Riga 106: | ||
#!/bin/bash | #!/bin/bash | ||
FILE=/dove/voglio/backuppare/ | FILE=/dove/voglio/backuppare/name_backup | ||
NAME= | NAME=utente_sql | ||
PASS= | PASS=password_sql | ||
DB= | DB=nome_DB | ||
echo "Content-type: text/plain" | echo "Content-type: text/plain" | ||
Riga 112: | Riga 115: | ||
echo "Tried to export file: "$FILE | echo "Tried to export file: "$FILE | ||
mysqldump --quote-names -u $NAME --password=$PASS $DB > $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> | </pre> | ||
Lo script permette il backup del database specificato nella variabile <code>DB</code>.<br/> | 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 | 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. | ||
=Backup manuale= | <!-- 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: | Nel caso si volesse effettuare un backup manuale di uno specifico database, è possibile utilizzare il comando: | ||
<pre> | <pre> | ||
# mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump | # mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump | ||
</pre> | </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: | Il ripristino potrà essere effettuato con il comando: | ||
<pre> | <pre> | ||
# mysql -u [username] -p [database_name] < [backup_file].dump | # 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> | </pre> | ||
=Per approfondimenti= | == 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]] |