Bonjour à tous!

Comme vous avez pu remarquer dans le sujet, nous allons parler de la sauvegarde d’une, de plusieurs ou de la totalité de vos bases de données. Nous allons nous intéresser plus particulièrement à la solution pour sauvegarder votre base OCS Inventory.

Une sauvegarde (autrement dit un backup) de vos BD, peuvent vous faciliter la vie et surtout éviter de perdre vos précieux données lors d’un crash du serveur. Certains entre vous me diront qu’on peut simplement utiliser la commande mysqldump pour créer un dump de la base en question. Mais tout n’est pas si facile que ca! En effet, on peut parfois rencontrer les BD dont les tables sont sous format « innodb »(notamment certains tables d’OCS Inventory)  . Ce format particulier ne supporte pas la célèbre commande mysqldump. Pour contourner ce problème, j’ai crée un script bash qui va sauvegarder la totalité du dossier mysql avec quelques fonctionnalités optionnelles mais très utililes. Je vous invite donc à suivre les explications du script que vous pourrez télécharger en fin de l’article.

1) La partie déclarative(on instancie les variables qu’on utilisera dans le script)

SUFFIXE_DATE=$(date ‘+%Y%m%d’) # date pour nom de fichier de sauvegarde

SUFFIXE_HEURE=$(date ‘+%H%M%S’) # heure pour nom de fichier de sauvegarde

NOM_FICHIER= »SAUVEGARDE-MYSQL_$SUFFIXE_DATE-$SUFFIXE_HEURE.tar.gz » #nom du fichier avec date et heure de la sauvegarde

CHEMIN_MYSQL=/var/lib/ # chemin de mysql

FICHIER_LOG= »compte-rendu-mysql.txt » # fichier de compte rendu

SERVEUR=’nom_du_serveur # nom du serveur

DESTIN=’mon_mail@mail.fr # destinataire du compte-rendu

2) Les operations

cd $CHEMIN_MYSQL # on se place dans le dossier avec nos bases de données

rm -f $FICHIER_LOG #effacement ancien texte du compte-rendu si présent (si vous avez déjà effectué une sauvegarde précédemment)

echo  » ===== sauvegarde MYSQL ===== » > $FICHIER_LOG

date ‘+%H-%M-%S’ >> $FICHIER_LOG

echo  » ===== debut sauvegarde ===== » >> $FICHIER_LOG # enregistrement des informations dans notre fichier log

tar -czf $NOM_FICHIER mysql/ # sauvegarde complète en compressant (vous pouvez le changer selon ce que vous voulez sauvegarder)

echo  » =====  fin sauvegarde  ===== » >> $FICHIER_LOG # inscription des opérations dans le fichier log

date ‘+%H-%M-%S’ >> $FICHIER_LOG

echo  » ===== debut  transfert ===== » >> $FICHIER_LOG

A ce stade nous avons une archive qui contient nos bases de données. Pour éviter de les perdre, nous pouvons les envoyer sur un serveur FTP.

3) Envoi sur serveur FTP

CHEMIN_FTP=’le_chemin_sur_serveur_FTP

lftp -c « open ip_du_serveur; user userftp mot_de_passe; cd $CHEMIN_FTP; put $NOM_FICHIER;exit » #on se connecte au serveur FTP, on se place dans le répertoire voulu et on envoi le fichier compressé

echo  » =====  fin  transfert  ===== » >> $FICHIER_LOG

date ‘+%H-%M-%S’ >> $FICHIER_LOG

echo  » =====        fin       ===== » >> $FICHIER_LOG #on inscrit les operations dans notre fichier LOG

Voila, la sauvegarde se trouve maintenant sur notre serveur FTP. Nous pouvons donc le supprimer du dossier MySQL.

4) suppression de la sauvegarde locale

rm -rf $CHEMIN_MYSQL/$NOM_FICHIER

Et enfin envoyer un compte rendu sur la messagerie de l’intéressé.

5) envoi du compte-rendu

mail -s »sauvegarde MYSQL du serveur $SERVEUR et transfert » $DESTIN < $FICHIER_LOG

Voila, comme promis, je met à votre disposition le script: sauvegarde_mysql.sh (mot de passe: m2env)

Vous aurez juste à changer les paramètres en orange.

N’oubliez pas de convertir le fichier avec la commande dos2unix. Sinon votre fichier ne pourra pas être exécuté, notamment, les retours à la ligne vont envoyer les erreurs. Vous pouvez vérifier l’interprétation de votre fichier en utilisant la commande od.

Bonne sauvegarde à tous!