Sauvegarder automatiquement une base de données MySQL

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

12 avril 2011

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 : permet de dumper une base entière.
  • Avec la commande mysqldump : permet une plus grande souplesse d'utilisation : sauvegarde de certaines tables, de plusieurs bases etc...

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. A la racine du compte utilisateur il y a un dossier "sauvegardes", nous voulons créer un fichier SQL dont le nom est la date du jour au format YYYY-MM-DD.

Script de sauvegarde de base de données

#!/bin/bash

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

dossier="sauvegardes";

# Sauvegarde de la base de données dans le fichier YYYY-MM-DD.sql.
mysqldump -h <hote> -u <utilisateur> -p<mot de passe> <nom base>  > $dossier/$var_date.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 la moins utilisée, nous déclencherons la sauvegarde quotidienne à ce moment.

Automatisation de la sauvegarde avec le crontab

nicolas@informatix : crontab -e

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

0 4 * * * sh sauvegardes/sauvegarde.sh >> sauvegardes/sauvegarde.log

Aillez conscience que ce système n'est qu'une piste à explorer plus en détails par 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...

A bientôt !

Par
Créateur et administrateur.

Dans la même catégorie

MySQL: comment faire une requête sur la description d'une table
MySQL : order by selon la valeur des champs
MySQL ON DUPLICATE KEY UPDATE : insérer ou mettre à jour une ligne
MySQL : une table pivot dynamique
SQL : faire un select sur une liste de valeurs
MySQL : créer une table à partir d'un select
MySQL : copier une table
MySQL REPLACE : insérer ou mettre à jour une ligne
MSSQL : Trouver le message qui correspond à un code d'erreur
MySQL : Comment autoriser les connexions distantes ?
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)