Script de sauvegarde des bases MySQL

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.

Vous pouvez laisser une réponse, ou trackback depuis votre site web.
  • http://www.blog.cactuscrew.com/?2006/03/07/32-script-de-sauvegarde-des-bases-mysql CactusCrew WebDev

    Script de sauvegarde des bases MySQL

    La sauvegarde d’une base de donnée MySQL5, contenant non seulement la structure des tables, et les données, mais également la sauvegarde des vues, des procédures stockées et des triggers