ScriptingServicesWeb

Automatiser la sauvegarde de vos bases de données sur votre NAS

Dans un précédent article, nous avons vu comment automatiser la sauvegarde de son site web sur son NAS. Cependant, nous n’avions pas traité la partie base de données qui est tout aussi importante que la partie fichier.

Nous verrons donc ici comment sauvegarder vos bases de données à l’aide du crontab. Sous Linux, Cron est le gestionnaire des tâches devant être exécutées à un moment précis. Chaque utilisateur a un fichier crontab, lui permettant d’indiquer les actions à effectuer régulièrement.

La plupart des hébergements web étant sous Linux, nous allons pouvoir utiliser ce crontab. Par contre mes serveurs étant sus OVH, nous verrons ici comment modifier le crontab chez OVH, mais il est généralement possible de le faire chez la plupart des hébergeurs.

La création de votre sauvegarde peut être effectuée de différente manière en fonction de votre accès à la base de données. Si c’est un serveur SQL privée, c’est encore plus simple pour créer votre dump puisque vous avez un accès total à votre base de données. Nous verrons ici la méthode de sauvegarde pour un serveur mutualisé via un simple script qui se chargera de faire le dump.

Création du script de sauvegarde

Nous allons créer un fichier appelé « Backup.sh » à la racine de notre hébergement.

#!/bin/bash

#Variable BDD
user_bdd="tech2techblog"
password_bdd="monpasswordbddblog"
host_bdd="bddblog.mysql.db"
name_bdd="bddblog"

# Autres options
backup_path="/home/tech2tech/_SQLBackup/"
date=$(date +"%d-%b-%Y")
# Set default file permissions
umask 177
# Dump database
mysqldump --user=$user_bdd --password=$password_bdd --host=$host_bdd $name_bdd > $backup_path/$name_bdd-$date.sql

# Delete files older than 21 days
find $backup_path/* -mtime +21 -exec rm {} \;

Pour certains d’entre vous, ce script sera peut-être du chinois, alors je vais essayer de vous expliquer ça !

Dans l’entête du script, on trouve les variables, ces variables seront appelées ensuite dans le script. Il est donc nécessaire de remplacer les variables suivantes avec vos données :

  • user_bdd= » » : le nom d’utilisateur pour l’accès à votre base de données
  • password_bdd= » » : le mot de passe lié à l’utilisateur qui accédera à votre base de données
  • host_bdd= »bddblog.mysql.db » l’adresse de votre base de données
  • name_bdd= »bddblog » le nom de votre base de données

On y est presque, on a encore quelques variables à remplir notamment en ce concerne l’emplacement des sauvegardes, mais aussi le format de la date sur le fichier final.

  • backup_path= » » : ici entrez le chemin de votre dossier de backup sur votre serveur FTP. C’est ici que seront stockées les sauvegardes.
  • date= : pour la fonction date, vous pouvez laisser comme ça si ça vous convient ou changer en fonction de vos envies / besoins

Ensuite vient la fameuse ligne qui va vous permettre de lancer la sauvegarde en récupérant les informations des variables :

mysqldump --user=$user_bdd --password=$password_bdd --host=$host_bdd $name_bdd > $backup_path/$name_bdd-$date.sql

Et on finit avec une purge des fichiers de plus de 21 jours (3 semaines), vous pouvez également adapter cette partie.

find $backup_path/* -mtime +21 -exec rm {} \;

Voilà pour la partie script. Maintenant à vous de jouer pour créer le votre, et si vous avez plusieurs bases de données à sauvegarde c’est tout à fait possible en ajoutant autant de variables que de base de données à sauvegarder. Voici un exemple d’un script avec deux bases de données sauvegardées :

#!/bin/bash

#Variable Forum
user_forum="tech2techforum"
password_forum="monpasswordbddforum"
host_forum="bddforum.mysql.db"
dbname_forum="bddforum"

#Variable blog
user_blog="tech2techblog"
password_blog="monpasswordbddblog"
host_blog="bddforum.mysql.db"
dbname_blog="tech2techblog"

# Other options
backup_path="/home/tech2tech/_SQLBackup/"
date=$(date +"%d-%b-%Y")
# Set default file permissions
umask 177
# Dump database tech2tech forum
mysqldump --user=$user_forum --password=$password_forum --host=$host_forum $dbname_forum > $backup_path/$dbname_forum-$date.sql

# Dump Database tech2tech Blog
mysqldump --port=35217 --user=$user_blog --password=$password_blog --host=$host_blog $dbname_blog > $backup_path/$dbname_blog-$date.sql

# Delete files older than 21 days
find $backup_path/* -mtime +21 -exec rm {} \;

Enregistrer votre fichier sur le serveur FTP de votre hébergeur à la racine. Puis accéder à la gestion de votre hébergement pour mettre en place la Crontab.

Mise en place d’une Crontab sur OVH

Ici, nous verrons comment mettre en place le planificateur de tâche (lancement du script) sur OVH.

Depuis l’interface de gestion d’OVH, sélectionnez votre hébergement puis cliquez sur « Plus + » et enfin « Tâches planifiées – Cron ».

Cliquez sur « Ajouter une planification » pour ajouter votre tâche.

Ajouter le nom de votre script (s’il est dans un sous dossier, ajouter le chemin complet), dans la partie Langage, sélectionnez autre puis cocher « Activation » pour que votre script soit actif. Passer à la planification en cliquant sur « Suivant« .

Si vous avez l’habitude des crontab Linux, vous pouvez passer en mode expert, sinon rester en Mode simple et sélectionnez la périodicité de votre tâche. Cliquez sur Suivant pour continuer.

Si vous être d’accord avec le résumé de  votre tâche, cliquez sur Valider. Votre tâche sera alors lancée selon votre planification.

Après quelques jours, vous devriez voir votre répertoire de backup se remplir de vos dumps SQL.

Cette sauvegarde couplée à la sauvegarde des fichiers de votre serveur FTP, vous permettra alors d’avoir une sauvegarde complète et externalisé de vos sites internet.

Mikaël GUILLERM

Administrateur Système et Autoentrepreneur depuis 2009 pour la société zerobug. Je partage mes connaissances, problèmes et solutions à travers articles ou tweets !

Articles similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Bouton retour en haut de la page