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!

Commentaires
Ecrire un commentaire Trackback