Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/03/2009, à 14:44

Shokola

Sauvegarde Mysql via Rsync

Bonjour à tous.

Je me tourne vers vous car j'ai un petit soucis au travail.

Je dois réaliser une sauvagarde quotidienne de toutes les bases de données Mysql d'un serveur distant.

-J'ai donc penser ecrire un script qui listerai les bases de données et les sauvegarderais dans un dossier donné.
-Crée un utilisateur ftp chrooté dans ce dossier.

Puis de ma machine me connecter avec cet utilisateur backuper le tt en local verifié la correspondance des dossiers locaux et distant si ok on efface tt dans le distant sinon on recommence le telechargement.

PROBLEME je ne sais pas comparer deux dossiers via ftp ....

Ayant tourner un peut sur irc et google pour trouver une solution a mon probleme.
Je decouvre rsync qui en plus de faire les action precedemment cité fait de la copie incrementale = plus besoin d'effacer regulierement les vieux backup locaux ( 2 Go par jour ca va vite tongue )
Mais comment faire ..

Voial je m'en remet a vous

@+

#2 Le 23/03/2009, à 15:37

genma

Re : Sauvegarde Mysql via Rsync

Quelques idées en vrac : une base mysql, ça se sauvegarde par un dump et une commande du genre mysqldump. Tu as alors un export de la base. Cet export, tu fais un md5 dessus sur le serveur. Tu rappatries par ftp ce dump et ensuite tu compares le md5 en local du dump à celui du serveur.

Rsync marche pour des fichiers, là ta sauvegarde est un "gros" fichier, donc ça ne sert pas à grand chose : il sera à chaque fois différent.


"Lorsque tu as découvert le libre, tu sais que tu ne pourras plus jamais revenir en arrière".
Utilisateur d'Ubuntu depuis la version 4.10 !
Mon blog ?      https://blog.genma.fr
Mon twitter?     http://twitter.com/genma

Hors ligne

#3 Le 26/03/2009, à 19:09

Reno123

Re : Sauvegarde Mysql via Rsync

J'utilise Rsync, pour faire des sauvegardes distantes comme tu planifie de les faire.

Rsync ne sauvegarde que les differences entre les 2 fichiers, ce qui reduit considerablement les durées des sauvegardes.

Cepandant, la sauvegarde de la base MySql ne peut se faire que si cette dernière n'est pas en cours d'utilisation.

La ligne que j'utilise pour la sauvegarde est

#!/bin/sh
#__________________________________
#|                                                          |
#|              Script de sauvegarde          |
#|_________________________________|
#
#
# Ip du site de sauvegarde
#
ip=XX.XX.XX.XX
#
# Définition des emplacement à sauver
#
doss1=/chemin/à/préciser
doss2=/chemin/à/préciser
doss3=/chemin/à/préciser
doss4=/chemin/à/préciser
#
# Définition des emplacements de sauvegarde
#
sauv_doss1=/chemin/à/préciser
sauv_doss2=/chemin/à/préciser
sauv_doss3=/chemin/à/préciser
sauv_doss4=/chemin/à/préciser
#
# Emplacement du fichier de log
#
log=/chemin/à/préciser
#
# Sauvegarde des dossier
#
echo "debut de sauvegarde le "`date` >> $log
#
rsync -rvz --delete $doss1 $ip:$sauv_doss1 >> $log #-r (recursive:tous les dossier fils) v (verbeux: liste les fichiers) z (compression durant le transfert) --delette (efface les fichier et dossier effacé de la source)
echo "Sauvegarde du partage terminé le "`date` >> $log
rsync -rvz --delete $doss2 $ip:$sauv_doss2 >> $log
echo "Sauvegarde de kyetos terminé le "`date` >> $log
rsync -rvz --delete $doss3 $ip:$sauv_doss3 >> $log
echo "Sauvegarde de WinParc terminé le "`date` >> $log
rsync -rvz --delete $doss4 $ip:$sauv_doss4 >> $log
echo "Sauvegarde de la paye terminé le "`date` >> $log
#
echo "fin de la sauvegarde le "`date` >> $log
#
# Envoi d'un mail avec le Logfile
#
domain=
sender=
dest1=
dest2=
#
email -q -n "Serveur "$sender -f $sender@$domain -s "Sauvegarde Internet" -u $sender@$domain -i MOTDEPASSESMTP -r smtp.$domain -b -a $log $dest1@$domain
#
# Suppression du logfile une fois envoyé
#
rm $log
#
# 
#

Voila, c'est pas parfait mais ca fait bien son boulot.
Si vous avez des suggestion je suis preneur.

NOTE : Le tout marche sous windows, avec Cygwin en installant ssh, rsync et email.
mais ya pas de raison qu'il ne tourne pas sous nux wink

#4 Le 29/03/2009, à 10:47

gillouz

Re : Sauvegarde Mysql via Rsync

j'ai aussi un serveur mysql au boulot et je le sauvegarde sur un autre serveur à distance avec la commande suivante

mysqldump -u <utilisateur local> -e  --password=<mot de passe local> --opt <base de donnée local> | mysql -u <utilisateur backup> --password=<mot de passe backup> -h <ip du serveur backup> -C <base de donnée backup>

et j'mis cette commande dans la crontab toute les nuits et ca marche super bien depuis 4 ans

Hors ligne

#5 Le 30/03/2009, à 03:07

Martopioche

Re : Sauvegarde Mysql via Rsync

Bonjour,

gillouz vient de proposer une chose que je ne comprends pas pourquoi vous ne faites pas : faire le backup directement sur la machine de backup... MySQL accepte les connexion réseau, je présume que c'est une base qui a des autorisation de connexion réseau, au pire, une connexion sécurisée uniquement avec le serveur de backup est envisageable en ne rajoutant un utilisateur qui ne serait autorisé qu'en lecture à partir de cette machine...

Après, le cron sur la machine de backup contient une instruction du type :

mysqldump --host=[hostBdd] --user=[user] --password=[pw] --databases [databases] > dump.sql

Du coup, il n'y a pas besoin de créer un utilisateur chrooté et du coup est plus sécurisé (le MDP en claire dans le scripte ne concerne qu'une connexion à partir de cette machine pour un utilisateur avec des droits en lecture seule sur les bases limitées) et évite de gérer le cas où la copie commence avant que le dump ne se finisse et donc les incohérences.

Reste le problème des volumes. rSync n'est pas d'un grand secours dans tous les cas c'est un outil de synchronisation de fichiers. Dans tous les cas, il recopiera l'intégralité de ton nouveau dump (plus récent que l'ancien) d'une machine à l'autre. La seule manière de faire "de l'incrémental" est de pouvoir le faire au niveau de la base de données et de ne dumper que les différences entre la dernière sauvegarde et l'actuelle.

Maintenant, si le problème est le volume, il reste l'export en format texte (type SELECT ... INTO OUTFILE) (on peut facilement gagner un facteur 20). Mais c'est plus pénible à mettre en place et en général réservé aux migration de données.

Hors ligne

#6 Le 30/03/2009, à 06:23

NooP

Re : Sauvegarde Mysql via Rsync

Bonjour,

As tu regardé les outils MySQL ?

Dans MySQL Administrator,  tu as tout ce qu'il faut pour planifier des Backups, pour les restaurer etc ...


Votez Macron, vous l'aurez dans le fion !

Hors ligne