1. HOREL Laëtitia
SAUVEGARDE D’UNE BASE DE DONNÉES AVEC CRONTAB
Mise en situation
Avant de débuter, une question s’impose : qu’est-ce que Crontab ? C’est un service sous
Linux qui permet de modifier des fichiers de configuration du programme Cron. Ces fichiers vont
nouspermettre d’exécuterdestâchesetde définirlapériode danslaquelle la tâche doit s’exécuter.
Dans notre cas, nous allons via Crontab sous CentOS 7, paramétrer une sauvegarde d’une base de
données SQL à un instant T.
Notre distribution contient actuellement un serveur SQL avec une base de données nommée
« communes ». Par peur de perte d’informations, nous souhaitons en faire une sauvegarde.
Pour ce faire, deux méthodes existent : la sauvegarde manuelle ou la sauvegarde planifiée avec
Crontab.
Sauvegarde manuelle
Afinde sauvegardernotre base, nousexécutonslacommande suivante :
# mysqldump -u [username] –p[password] [database_name] >
[emplacement_fichier et nom_fichier.sql]
Dans notre cas, celanousdonne:
# mysqldump –u root –p communes >/bin/backup/sauv_communes.sql
Cependant, cette méthode présente un gros inconvénient. Il faut être obligatoirement devant la
machine etlancerla commande pourpouvoirsauvegarder. C’est pourquoi il existe des services tels
que Crontab pour pouvoir automatiser la tâche.
Sauvegarde avec Crontab
Crontab est en résumé un planificateur de tâches sous forme de service installé par défaut
sur toutes les distributions Unix et Linux. Afin de créer la sauvegarde, il faut taper la commande
crontab –e.Cette commande nous permet d’éditer le fichier crontab.
Normalement,lorsde la première ouverture, le fichier est vide. C’est à cet endroit que nous allons
créer la planification.
Elle se constitue de la façon suivante :
1ère
valeur : les minutes (min) à laquelle la tâche doit s’effectuer : valeur allant de 0 à 59.
2ème
valeur : l’heure (h) de l’exécution de la tâche : valeur allant de 0 à 23.
3ème
valeur:le jour dumois (jdm) à laquellelatâche doit s’effectuer : valeur allant de 1 à 31.
4ème
valeur : le mois (m) de l’exécution de la tâche : valeur allant de 1 à 12.
5ème
valeur:le jour de la semaine (jds):valeurallantde 0 à 6, sachantque 6 = dimanche.
2. HOREL Laëtitia
Si par exemple nous voulons que la tâche s’effectue tous les jours, il faudra alors assigner la valeur
*qui signifie « tous ».
S’ensuit la commande que nous souhaitons effectuer puis rediriger votre résultat vers un fichier.
Dans notre cas, nousvoulonsfaire une sauvegardede labase de données« communes ».Nousallons
donc remplacerlacommande àexécuterparla commande manuelle vue plushaut. Voici ce que cela
donne :
(min)(h)(jdm)(m)(jds)mysqldump--user=‘nom_utilisateur’ --password=’mdp_base_de_données’
nom_base_de_données>chemin_et_fichier_sauvegarder
Ci-dessousse trouve unexemple concret de lacommande àrajouterdansle fichiercrontab :
39 22 * * * mysqldump --user=’root’--password=’root00*’communes>/bin/communessave.sql
Afinde traduire,lasauvegarde de ma base de données « communes » se fera tous les jours à 22h39
et se sauvegardera sur le fichier « communessave.sql » dans le dossier« bin »
Pour vérifier le résultat de notre commande, il faut ouvrir le fichier de sauvegarde grâce à la
commande :vi /bin/communessave.sql(dans le cas de l’exemple ci-dessus).
Dans ce fichier doit se trouver tout un tas d’informations sur notre base de données.
Si une erreur quelconque se produisait lors de la sauvegarde, un mail est envoyé à root et un
message s’affichedansLinux vousindiquantoùtrouverle mail. L’erreur est affichée afin de corriger
le problème.
Sauvegarde par script :
Ce script nouspermettrade personnaliserle nomdufichierde sauvegardeparladate et l’heure de
sa création.
3. HOREL Laëtitia
Nousavonsd’abordcréé un dossierscriptsdans /root/pour créernos scripts.Puisnousavons créé
un fichierbackup_bdd.shendonnantlesdroits d’éxecutionpourrootavecchmod700.
Dans backup_bdd.sh,nousrajoutonsleslignessuivantes :
fori in communes; do
mysqldump –-user=’root’ –-password=’motpasse_bdd’ $i> ${i}_`date +"%Y-%m-
%d"`.sql
tar jcf ${i}_`date +"%Y-%m-%d"`.sql.tar.bz2 ${i}_`date +"%Y-%m-%d"`.sql
rm ${i}_`date +"%Y-%m-%d"`.sql
Pour le tester, il faut lancer la commande sh backup_bdd.shpuis se rendre dans /root/scripts pour
vérifier que le fichier est présent. S’il est présent, c’est que le script fonctionne. Le nom du fichier
doit apparaître de la façon suivante : comunes_2015-10-23
Il suffira alors de refaire un crontab –e en ajoutant la commande ci-dessus en plus des valeurs de
planification. Ce qui donne :