PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Wodric : Backup une base de données avec Git

lundi 16 janvier 2017 à 21:00

Dans ce post, nous allons aborder une solution possible pour backup une base de données. Cet article est fortement inspiré d’un article anglophone, n’hésitez pas à y jeter un œil.

L’exemple donné dans l’article se base sur une distribution Débian et une base de données MySQL.

Disclamer : Je n’ai pas testé cette solution en production. Je vous laisse le soin de vérifier les impacts possibles de cette mise en place.

Backup une base de données en production, un enjeu majeur

Faire le backup de vos bases de données de production est un challenge. Pour énormément de raisons, il s’agit d’une réflexion complexe. Il existe beaucoup de besoins différents, appelant à autant de réponses possibles.

Cependant, il existe plusieurs contraintes:

Je n’irai pas plus loin dans l’analyse, cet article n’est pas là pour définir qu’elle est l’approche la plus adaptée en fonction de votre situation, mais pour proposer une solution possible à cette problématique.

Utiliser Git pour historiser sa base de données

L’idée d’utiliser Git pour stocker ces backups SQL a du sens. En effet, le SQL est un langage, un backup de base n’est rien d’autre que du code, pourquoi ne pas le stocker directement grâce à Git … comme le reste de votre code.

J’y vois deux avantages :

Préparation du répertoire

Dans un premier temps, après avoir installé et configuré git, il faut préparer le répertoire dans lequel vous allez gérer votre backup :

# création du répertoire de backup et création du backup initial
mkdir -p /path/to/backup
cd /path/to/backup 
mysqldump -u [user] -p[pwd] --skip-extended-insert [database] > [database].sql 
# initialisation de git
git init 
git add [database].sql 
git commit -m "Initial commit backup database" 

# paramétrer le dépôt git distant
git remote add origin [git-depot-url]
git push -u origin --all
git push --tags

avec :

L’utilisation de l’option « –skip-extended-insert » de mysqldump, permet de rendre beaucoup plus lisible les commits. Chaque commit laissera ainsi apparaître uniquement les lignes ajoutées, modifiées ou supprimés dans la base. De plus, git appréciera, car il devra gérer un dépôt de taille plus raisonnable.

Automatisation des backups

Maintenant que tout est initialisé, il faut passer à l’automatisation des backups, pour cela éditer le fichier crontab avec la commande :

crontab -e

Ajouter la ligne suivante :

0 0 * * * cd /path/to/backup && \\ mysqldump -u [user] -p[pwd] --skip-extended-insert [database] > [database].sql && \\ git commit -am "Updating DB backup" &&  \\ git push

Elle créée le backup et le commit et le push sur Git toutes les heures. La fréquence de backup est à adapter au projet, cron offre de nombreuses possibilités de planification.

En bonus, quelques conseils et astuces pour mettre en place cette solution:

Pour conclure

D’après moi, cette solution peut être efficace dans le cadre de base de données pas trop volumineuse, permettant ainsi de réaliser des backups fréquents sans consommer énormément d’espaces disques grâce à Git.

Si vous avez déjà mis en place un système similaire ou que vous être plus compétent que moi, n’hésitez pas à faire des remarques! Je suis tout ouïe!

N’hésitez pas à me laisser un feedback sur cet article en attribuant une note (système d’étoiles en dessous de l’article) ou en me commentant vos impressions. Si vous l’avez apprécié, vous pouvez également le partager pour mon plus grand plaisir ;).

Sources :

 

The post Backup une base de données avec Git appeared first on Wodric.

Gravatar de Wodric
Original post of Wodric.Votez pour ce billet sur Planet Libre.