Backup di MySQL tramite script: differenze tra le versioni

Vai alla navigazione Vai alla ricerca
nessun oggetto della modifica
(Nuova pagina: ==Effettuare un backup dei database MySQL tramite uno script Bash== ===Introduzione=== Attraverso lo script riportato di seguito è possibile effettuare il backup di tutti i database p...)
 
Nessun oggetto della modifica
(41 versioni intermedie di 9 utenti non mostrate)
Riga 1: Riga 1:
==Effettuare un backup dei database MySQL tramite uno script Bash==
{{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 presente su: http://bash.cyberciti.biz/) 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<sup>[[#Collegamenti esterni| [1]]]</sup> presente su cyberciti.biz<sup>[[#Collegamenti esterni| [2]]]</sup>) permette la personalizzazione attraverso i parametri:
<pre>
<pre>
MyUSER="SET-MYSQL-USER-NAME"    # USERNAME
MyUSER="utente_MySQL"    # USERNAME
MyPASS="SET-PASSWORD"      # PASSWORD
MyPASS="Password_Utente  # PASSWORD
MyHOST="localhost"         # Hostname
MyHOST="localhost"       # Hostname
</pre>
</pre>
che vanno compilati con i dati per accedere al nostro server MySQL, e:
che vanno compilati con i dati per accedere al nostro server MySQL, e:
Riga 12: Riga 12:
IGGY="test"
IGGY="test"
</pre>
</pre>
La variabile <tt>'''TEST'''/tt> permette di impostare la directory di destinazione del backup. I database saranno salvati all'interno di una sottodirectory chiamata <tt>mysql</tt>.<br/>
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 <tt>'''IGGY</tt> 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 26: 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
# Feedback/comment/suggestions : http://cyberciti.biz/fb/
# -------------------------------------------------------------------------
# -------------------------------------------------------------------------
# This script is part of nixCraft shell script collection (NSSC)
# This script is part of nixCraft shell script collection (NSSC)
Riga 92: Riga 92:
done
done
</pre>
</pre>
<br/>
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:
: [[Utente:Ferdybassi|Ferdybassi]]
<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>
[[Backup di MySQL tramite script]]<br>
[[Configurare MySQL per accettare connessioni remote]]<br>
 
== Collegamenti esterni ==
[1] [http://bash.cyberciti.biz/backup/backup-mysql-database-server-2/  script originale]<br/>
[2] [http://bash.cyberciti.biz/ bash.cybercity.biz]
 
{{Autori
|Autore = [[Utente:Ferdybassi|Ferdybassi]]
|Estesa_da =
: [[Utente:Mm-barabba|Mm-barabba]]
}}
 
[[Categoria:Bash Scripting]]
[[Categoria:Database server]]
[[Categoria:Backup&restore]]

Menu di navigazione