Backup di MySQL tramite script: differenze tra le versioni
(corretta gerarchia titoli) |
|||
Riga 124: | Riga 124: | ||
# mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump | # mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump | ||
</pre> | </pre> | ||
== Ripristino del database == | |||
Il ripristino potrà essere effettuato con il comando: | Il ripristino potrà essere effettuato con il comando: | ||
<pre> | <pre> |
Versione delle 21:28, 14 feb 2010
Versioni Compatibili ERRORE: valore non valido ( Debian Sarge 3.1 Debian Etch 4.0 Debian Lenny 5.0 Debian Squeeze Debian Sid )! Vedi qui. |
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:
MyUSER="utente_MySQL" # USERNAME MyPASS="Password_Utente # PASSWORD MyHOST="localhost" # Hostname
che vanno compilati con i dati per accedere al nostro server MySQL, e:
DEST="/backup" IGGY="test"
La variabile DEST
permette di impostare la directory di destinazione del backup. I database saranno salvati all'interno di una sottodirectory chiamata mysql
.
La variabile IGGY
permette di indicare quali database devono essere esclusi dal processo di backup.
Lo script
#!/bin/bash # Shell script to backup MySql database # To backup Nysql databases file to /backup dir and later pick up by your # script. You can skip few databases from backup too. # For more info please see (Installation info): # http://www.cyberciti.biz/nixcraft/vivek/blogger/2005/01/mysql-backup-script.html # Last updated: Aug - 2005 # -------------------------------------------------------------------- # This is a free shell script under GNU GPL version 2.0 or above # Copyright (C) 2004, 2005 nixCraft project # Feedback/comment/suggestions : http://cyberciti.biz/fb/ # ------------------------------------------------------------------------- # This script is part of nixCraft shell script collection (NSSC) # Visit http://bash.cyberciti.biz/ for more information. # ------------------------------------------------------------------------- MyUSER="utente_MySQL" # USERNAME MyPASS="Password_Utente # PASSWORD MyHOST="localhost" # Hostname # Linux bin paths, change this if it can't be autodetected via which command MYSQL="$(which mysql)" MYSQLDUMP="$(which mysqldump)" CHOWN="$(which chown)" CHMOD="$(which chmod)" GZIP="$(which gzip)" # Backup Dest directory, change this if you have someother location DEST="/backup" # Main directory where backup will be stored MBD="$DEST/mysql" # Get hostname HOST="$(hostname)" # Get data in dd-mm-yyyy format NOW="$(date +"%d-%m-%Y")" # File to store current backup file FILE="" # Store list of databases DBS="" # DO NOT BACKUP these databases IGGY="test" [ ! -d $MBD ] && mkdir -p $MBD || : # Only root can access it! $CHOWN 0.0 -R $DEST $CHMOD 0600 $DEST # Get all database list first DBS="$($MYSQL -u $MyUSER -h $MyHOST -p$MyPASS -Bse 'show databases')" for db in $DBS do skipdb=-1 if [ "$IGGY" != "" ]; then for i in $IGGY do [ "$db" == "$i" ] && skipdb=1 || : done fi if [ "$skipdb" == "-1" ] ; then FILE="$MBD/$db.$HOST.$NOW.gz" # do all inone job in pipe, # connect to mysql using mysqldump for select mysql database # and pipe it out to gz file in backup dir :) $MYSQLDUMP -u $MyUSER -h $MyHOST -p$MyPASS $db | $GZIP -9 > $FILE fi done
Esecuzione automatica dello script
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio: http://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_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.
# Back Up Mysql Database phproject By oTTo #!/bin/bash FILE=/dove/voglio/backuppare/name.sql NAME=inserire_utente_sql PASS=inserire_password_sql DB=inserire_nome_DB echo "Content-type: text/plain" echo echo "Tried to export file: "$FILE mysqldump --quote-names -u $NAME --password=$PASS $DB > $FILE # tar zxvf backupfile.tgz (se compresso) # sql nomedatabase < backupfile
Lo script permette il backup del database specificato nella variabile DB
.
L'inserimento di questo script in una voce del vostro crontab (si veda ad esempio: http://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_Cron) permette un backup automatizzato dei database di MySQL senza la necessità di interrompere il servizio.
Backup manuale
Nel caso si volesse effettuare un backup manuale di uno specifico database, è possibile utilizzare il comando:
# mysqldump --opt -u [user_name] -p [database_name] > [backup_file].dump
Ripristino del database
Il ripristino potrà essere effettuato con il comando:
# mysql -u [username] -p [database_name] < [backup_file].dump
Per approfondimenti
Installare un ambiente LAMP: Linux, Apache2, SSL, MySQL, PHP5
Backup di MySQL tramite script
Configurare MySQL per accettare connessioni remote