réplication de données.

rickypoo_4062
réplication de données.

Salut les dév :)

Je suis présentement en train d'analyser un projet plutôt complexe (utilisant des serveurs à 3 datacenter différents) que je compte faire d'ici peu. Dans ce projet j'utiliserai le classique couple PHP/MySQL et j'aurai une architecture similaire à la suivante:

- une application principale administration/client sur un serveur mutualisé X pour commencer;
- une application faisant des tâches de fond sur un VPS dans un autre datacenter (sûrement à Peer1);
- une autre application faisant les mêmes tâches que le premier VPS dans un autre datacenter (sûrement en europe).

Le but est le suivant, que les deux VPS aient certaines données disponibles sur la base de donnée principale (sur le serveur mutualisé).

La question principale est *comment* ?

J'ai songé faire comme suit: avec un cron job aux 12 ou 24 heures faire une synchronisation avec la db principale en me basant sur l'ID de la dernière ligne sur la base de donnée sur les VPS et de voir si sur la base de donnée principale l'ID est plus grand. Si c'est le cas de faire un transfert d'info par select/insert. Je peux toujours me connecter à distance sauf que le temps de latence serais trop gros c'est pourquoi je dois copier l'information.

Histoire de prendre le moins de ressources possibles sur les VPS (qui n'est pas extraordinaire au départ), j'ai songé à utiliser SQLite/PHP sur les VPS.

Quels sont vos avis sur la question ? À moins que MySQL n'offre déjà des outils de réplication sélective de données (du genre SQL Server).

fredericmazue

Une solution intéressante peut être de développer tout ça en Erlang.
Erlang est un langage naturellement concurrent et distribué.
Et à la place de Apache/Php, on utilise le serveur d'application Yaws qui est écrit en Erlang.
Et alors la base de données sera Mnesia, la base de données native d'Erlang, qui présente le grand avantage de s'auto-synchroniser sur tous les noeuds, mais avec l'inconvénient que ses performances se dégradent au delà du Go de données.

Dans ce cas on utilise PostgreSql et on écrit un petit peu de code Erlang pour synchroniser les bases.
Erlang est un langage dédié aux applications distribuées et concurrentes. Totalement méconnu, mais vraiment génial.
Il permet de faire ce que tu veux avec un très grande facilité, c'est vraiment son domaine de prédilection là :)

PS: mon site perso (lien ci-dessous) est servit par Yaws. :)

rickypoo_4062

Intéressant comme idée.

quelqu'un sur les forums de developpez m'a indiqué la doc sur la réplication de MySQL avec serveur maitre/esclave. Je doute que ce soit la plus adapté des solutions, enfin je songe tranquillement à faire des webservices tout simplement. Du genre un webservice qui accepterais une requête POST et la traiterais pour toute action ( ajouter/supprimer/éditer/suspendre ).