Sauvegardes et synchronisation de serveurs

Fermé
elod - 22 déc. 2009 à 15:35
 elod - 12 janv. 2010 à 09:45
Bonjour,
Je souhaite effectuer des sauvegardes automatiques, des synchronisations entre serveurs et de sécurisation de données.

Pour la synchronisation, à chaque nouvelle insertion dans la base de données, il doit y avoir une réplication dans une autre base distante.

Pour sécuriser la synchronisation, je souhaite aussi mettre en place un script ou une procédure qui relance les enregistrements (les paquets) à une fréquence donnée, jusqu'à ce qu'il y ait insertion. Ceci est très utile en cas de coupure électrique et surtout d'internet. Si on n'y arrive quand même pas, récupérer un message d'erreur ou d'alerte et afficher à l'utilisateur

Si quelqu'un a une idée, merci de m'aider.

4 réponses

mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
23 déc. 2009 à 01:40
Il faut que tu regardes du côté de ces outils :
http://doc.ubuntu-fr.org/rsync
http://doc.ubuntu-fr.org/cron
http://doc.ubuntu-fr.org/anacron
http://doc.ubuntu-fr.org/fcron

Pour la réplication ce n'est pas trop ma spécialité, mais google doit permettre de trouver des réponses :
https://www.system-linux.eu/index.php?post/2009/09/10/R%C3%A9plication-Mysql

Bonne chance
0
Merci pour les liens.
J'utilise déjà des sauvegardes automatiques avec le tableau cron.
En fait, j'ai plusieurs serveurs (distants physiquement) qui communiquent ensemble.

Mais ici, je propose qu'on résonne sur 2 serveurs.Dès qu'il y a un nouvel enregistrement sur l'un des serveurs, cet enregistrement est aussi copié sur l'autre. Ce model de fonctionnement a été mis en place à partir des fichiers php et xml. Tout marche bien. Mais quand il y a une coupure du net ou de l'électricité pour l'un ses 2 serveurs, il ne reçoit plus les enregistrements, et l'autre continue de fonctionner. Lorsque tout rentre dans l'ordre, les 2 serveurs ne sont plus synchrones et me crée des erreurs.

Je souhaite mettre en place une procédure, ou une tâche ou un script ... qui me permette de relancer la ligne à inserrer tant qu'elle n'a pas été faite et si possible, me retourne un message 'OK'

Merki!
0
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
30 déc. 2009 à 16:51
À ce moment là il faudrait que tu regardes anacron ou fcron qui prennent en charge les cas d'indisponibilité. Ou j'ai mal compris la question...
0
C'est vrai que fcron est intéressant. Mais, cron marche déjà bien pour ce que je fais.

En fait, parmi mes serveurs, j'ai un serveur central où j'ai le contenu de tous les autres serveurs. Ces autres serveurs ont des informations différentes les uns des autres. C'est la raison pour laquelle à chaque nouvelle insertion dans un serveur n1, on a une insertion de la même info dans le serveur central (et pas les autres). A l'inverse, si une information est enregistrée dans le serveur centra, la même info sera envoyée et insérée dans le serveur correspondant. Les n autres serveurs ont des informations complètement différentes.

Je ne peux donc pas faire de cron à ce niveau. J'envisageais envoyer un "ping" au serveur correspondant; si celui-ci répond (->récupérer et analyser le message), alors, on lui envoie le paquet, sinon, on relance toutes les 5 minutes. Une fois l'enregistrement effectuée, me renvoyer un message "OK".

J'ai été un peu longue, mais, je voulais donner un max d'explication... j'espère que j'y suis arrivée
0
Urielxx Messages postés 190 Date d'inscription mardi 26 août 2008 Statut Membre Dernière intervention 25 juin 2013 46
30 déc. 2009 à 22:22
La commande rsync permet de synchroniser deux arborescences pour qu'elles aient exactement le même contenu, c'est très certainement la commande qu'il te faut. Sinon, rdist peut eventuellement faire l'affaire aussi.

Exemple d'execution :
rsync -a /arsbosource serveur_destination:/arbo_destination/

Rsync peut utiliser ssh pour communiquer (option -e).

A noter que rsync ne fonctionne que pour synchroniser des arborescences filesystem. si tu veux synchroniser une BDD, tu dois utiliser les mécanismes spécifiques de ton SGBD (réplication MySQL, par exemple).

A+
0
mamiemando Messages postés 33378 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 novembre 2024 7 802
6 janv. 2010 à 20:00
En fait, parmi mes serveurs, j'ai un serveur central où j'ai le contenu de tous les autres serveurs. Ces autres serveurs ont des informations différentes les uns des autres. C'est la raison pour laquelle à chaque nouvelle insertion dans un serveur n1, on a une insertion de la même info dans le serveur central (et pas les autres). A l'inverse, si une information est enregistrée dans le serveur centra, la même info sera envoyée et insérée dans le serveur correspondant. Les n autres serveurs ont des informations complètement différentes.

Si j'ai bien compris tu as un serveur central qui regroupe toutes les informations de tous les serveurs. Mais seul la partie dédiée à un serveur satellite doit être répliquée vers ce serveur satellite.

Ce que je ne comprends pas trop, c'est si ces différents contenus sont séparés de manière étanche dans des arborescences distinctes. Par exemple au niveau du serveur central j'aurais par exemple les répertoires :

/media/replication/serveur1
/media/replication/serveur2
...
/media/replication/serveurn


... respectivement "rsync"és vers chacun des n serveurs satellites (et contenant respectivement uniquement les bases à répliquer vers le serveur concerné). Dans ce cas il est facile de s'en sortir avec des rsync, non ?

En fait pour être honnête avec toi, je ne suis pas sûre d'avoir compris exactement tes contraintes, ton besoin, et je ne suis pas très familière des réplications de bases de données.

Apparemment en postgresql il y aurait des outils comme pgadmin3 qui pourrait peut-être répondre à ton besoin.
http://doc.ubuntu-fr.org/postgresql

En mysql peut-être ça ?
https://www.howtoforge.com/mysql_database_replication_p2

Bonne chance
0
Merci.

Effectivement, les contenus de chaque serveur sont séparés de façon bien étanche. Je vous donne un exemple:
bdd 1 (contient uniquement des lettres) :
bdd 2(uniquement des nombres)
bdd 3 (caractères spéciaux)
bdd satellite (toutes ces données à la fois)

Lorsque j'inserre une lettre dans la bdd 1, cette insertion se fait aussi uniquement dans la bdd satellite.
Lorsque je fais une insertion dans la bdd 3, la même requête est aussi exécutée dans la bdd satellite.

A l'inverse, lorsqu'une nouvelle insertion (de nombre par exemple) dans la bdd satellite, la requête s'en va vers la bdd 2 et est exécutée uniquement à ce niveau.


Pour ce, j'utilise la méthode soap dans mes fichier php.
0