Script de sauvegarde des bases MySQL
Par Guillaume RUAS, 06/03/2006 à 22:57 :: MySQL :: #33 :: rss
Voici un petit script que j'ai réalisé qui permet de sauvegarder toutes les bases MySQL dans des fichiers séparés.
Ce script sauvegarde les bases de données MySQL d'un serveur et réalise les opérations suivantes :
- Check de la base de donnée.
- Analyse de la base de donnée.
- Dump de chaque base de données dans un fichier SQL distinct.
- Tar des fichiers SQL générés dans un seul fichier.
- Envoi par FTP du fichier .tar.gz de sauvegarde vers un autre serveur.
- Suppression des fichiers locaux de sauvegardes de plus de 10 jours.
1. Paramétrage du script :
#---------------------------------------------------------------# # Paramétrage de la connection MySQL # #---------------------------------------------------------------# #Nom de l'utilisateur qui lance le backup user=nom_de_l_utilisateur #Machine sur laquelle on se connecte host=host_mysql #Mot de passe de l'utilisateur de backup pass=mot_de_passe # Outil de dump MYSQLDUMP=mysqldump #Outil de check MYSQLCHECK=mysqlcheck # Options passées à MysqlDUMP OPTIONS="--add-drop-database --add-drop-table --complete-insert --routines --triggers --allow-keywords --max_allowed_packet=50M --force" #---------------------------------------------------------------# # Paramétrage de la sauvegarde # #---------------------------------------------------------------# # Répertoire temporaire pour stocker les backups TEMPORAIRE="/tmp/backup_mysql" # Nom du serveur MACHINE="$(hostname)" # Variable contenant la liste des bases de données BASES="" # Date DATE="$(date +"%d-%m-%Y")" DATE2=`date --date '10 days ago' "+%d-%m-%Y"` # Nom des fichiers de backup # Répertoire de destination du backup DESTINATION="/home/backups/mysql" FICHIER_BACKUP=$MACHINE"_BACKUP_MYSQL_"$DATE".tar.gz" FICHIER_EFFACER=$MACHINE"_BACKUP_MYSQL_"$DATE2".tar.gz" #Informations FTP LOGIN_FTP=login_ftp PASS_FTP=mot_de_passe_ftp HOST_FTP=serveur_ftp
Vous pouvez paramétrer les options passées à MysqlDUMP dans la variable OPTIONS. Dans le script de base les options suivantes ont été paramétrées :
--add-drop-database : ajoute les énoncés "DROP DATABASES"
--add-drop-table : ajoute les énoncés "Drop TABLE"
--routines : Sauvegarde les procédures et les fonctions pour chaque table
--triggers : sauvegarde les triggers de chaque table
--allow-keywords : Autorise les noms de colonnes étant des mots clés MySQL
--max_allowed_packet=50M : fixe la taille maxi des paquets envoyés à 50Mo
--force : permet d'ignorer les erreurs
2. Process de sauvegarde
#---------------------------------------------------------------# # Process de sauvegarde # #---------------------------------------------------------------# # Création du répertoire temporaire if [ -d $TEMPORAIRE ]; then echo "Le repertoire existe"; else mkdir $TEMPORAIRE; fi # On construit la liste des bases de données BASES="$(mysql -u $user -h $host -p$pass -Bse 'show databases')" # On lance le dump des bases for db in $BASES do #On lance un check et une analyse pour chaque base de donnée $MYSQLCHECK -u $user -h $host -p$pass -c -a $db # On lance un mysqldump pour chaque base de donnée $MYSQLDUMP -u $user -h $host -p$pass $OPTIONS $db -R > $TEMPORAIRE"/"$MACHINE"-"$db"-"$DATE".sql"; done # Création de l'archive contenant tout les dump #Cette archive est stockée dans le dossier défini pour la sauvegarde if [ -d $DESTINATION ]; then cd $TEMPORAIRE tar -cvzf $DESTINATION"/"$FICHIER_BACKUP * fi # On transfere l'archive par FTP cd $DESTINATION ftp -v -n $HOST_FTP <<SCRIPT user $LOGIN_FTP $PASS_FTP bin put $FICHIER_BACKUP bye SCRIPT # On supprime le fichier de plus de x jours if [ -f $DESTINATION"/"$FICHIER_EFFACER ]; then rm $DESTINATION"/"$FICHIER_EFFACER fi # On suprime le répertoire temporaire if [ -d fichier ]; then rm -Rf $TEMPORAIRE fi
Vous pouvez télécharger ce script au complet en cliquant ici.

Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.