Informatix le gaulois

Tutoriels et outils pour l'informatique.

Informatix > Tutoriels > Base de données > Sauvegarder automatiquement une base de données MySQL

Sauvegarder automatiquement une base de données MySQL

Comment automatiser la sauvegarde d'une base de données mysql avec mysqldump ?

mardi 12 avril 2011 à 12:23

La sauvegarde est un des éléments les plus importants de la vie d'un informaticien, sur MySQL cette opération est relativement simple à automatiser.

Le dump (copie de tout ou partie du contenu d'une mémoire vers un autre support) peut se faire de deux manières sur MySQL :

  • Avec la commande mysql : solution simple qui permet de dumper une base entière.
  • Avec la commande mysqldump : solution pas beaucoup plus compliquée qui permet une plus grande souplesse d'utilisation (sauvegarde de certaines tables, de plusieurs bases etc...). C'est cette commande qui sera donnée en exemple même si dans notre cas nous allons sauvegarder une base entière.


Sauvegarde / Exportation de la base de données

	mysqldump -h <hote> -u <utilisateur> -p<mot de passe> <nom base>  > sauvegarde.sql 
	

Il peut aussi être utile de savoir faire l'opération inverse. Pour importer une base de données cette fois il n'y a pas le choix, il faut utiliser mysql.

Importation de la base de données

	mysql -h <hote> -u <utilisateur> -p<mot de passe> <nom base> < sauvegarde.sql
	

Maintenant automatisons une sauvegarde. Voici le contexte actuel et le but recherché : à la racine du compte utilisateur nous avons un dossier sauvegardes/ déjà créé, nous voulons créer un dossier dont le nom est la date du jour au format YYYY-MM-DD dans lequel il y aura un fichier db.sql.

sauvegarde.sh

	#!/bin/bash

	# On stocke la date dans une variable
	var_date=`date +'%Y%m%d'`;

	echo "#### $var_date ####"

	dossier=sauvegardes/$var_date;

	# Création du dossier qui a pour nom la date du jour au format YYYY-MM-DD
	mkdir $dossier;
	echo "Dossier cree"

	# Sauvegarde de la base de données dans le fichier db.sql comme vu précédemment.
	mysqldump -h <hote> -u <utilisateur> -p<mot de passe> <nom base>  > $dossier/db.sql

	echo "Sauvegarde de la base de donnees terminee."
	

Il ne reste plus qu'à utiliser un planificateur de tâches. Pour l'exemple je vais utiliser le daemon cron qui est le planificateur de tâches par défaut de la majorité des systèmes UNIX. Nous supposons que c'est vers 4h le matin que la base est moins utilisée, c'est donc à ce moment que la sauvegarde sera déclenchée quotidiennement.

Automatisation de la sauvegarde avec le crontab

	NlC0@informatix : crontab -e

	# Dans le crontab :
	# m h  dom mon dow   command

	0 4 * * * sh sauvegardes/sauvegarde.sh >> sauvegardes/logs.txt
	

Pour le mot de la fin, aillez conscience que ce système n'est qu'une piste à explorer plus en détails de vous même. Il est évident qu'un vrai script de sauvegarde devrait par exemple tester la valeur de retour de mysqldump (echo $?) et bien d'autres...

Nicolas GAUTRON

Auteur

Nicolas GAUTRON
Créateur et administrateur.
http://www.informatix.fr



^ Haut de page ^



Dans la même catégorie

MySQL : Quand l'encodage veut votre peau !
mysqldump : Comment ne pas prendre en compte une table ?
Dump d'une table MySQL avec une requête
MySQL en ligne de commande
DELETE avec des jointures


Commentaire(s)



^ Haut de page | Commentaires ^