82 votes

Synchronisation de bases de données Mysql entre deux bases de données

Nous utilisons une application Java PoS (Point of Sale) dans plusieurs magasins, avec un backend MySql. Je souhaite que les bases de données des magasins soient synchronisées avec une base de données située sur un serveur hôte.

Lorsque des modifications sont apportées à une boutique, elles doivent être mises à jour sur le serveur hôte. Comment puis-je réaliser cela ?

11 votes

0 votes

Est-ce que c'est facile à faire ? Combien de temps pensez-vous que cela prendra ?

2 votes

@peedee La réplication MySQL est assez facile à mettre en place. Quelques commandes et une synchronisation initiale. Cela m'a pris environ 30 minutes la première fois.

61voto

Book Of Zeus Points 38130

La réplication n'est pas très difficile à créer.

Voici quelques bons tutoriels :

http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/

http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html

http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication

Voici quelques règles simples que vous devrez garder à l'esprit (il y en a d'autres bien sûr, mais c'est le concept principal) :

  1. Configurer 1 serveur (maître) pour l'écriture des données.
  2. Configurez un ou plusieurs serveurs (esclaves) pour la lecture des données.

De cette façon, vous éviterez les erreurs.

Par exemple : Si votre script insère dans les mêmes tables sur le maître et l'esclave, vous aurez un conflit de clés primaires dupliquées.

Vous pouvez considérer l'"esclave" comme un serveur "de secours" qui détient les mêmes informations que le maître, mais ne peut pas ajouter de données directement, il ne fait que suivre les instructions du serveur maître.

REMARQUE : Bien sûr, vous pouvez lire à partir du maître et écrire sur l'esclave, mais veillez à ne pas écrire sur les mêmes tables (maître vers esclave et esclave vers maître).

Je vous recommande de surveiller vos serveurs pour vous assurer que tout va bien.

Faites-moi savoir si vous avez besoin d'aide supplémentaire

0 votes

Oui, Shop = maître, Server = esclave

0 votes

J'ai configuré la base de données maître et je vais me connecter à une base de données esclave. Lorsque je fais cela, toute modification apportée à la base maître sera répercutée sur la base esclave et les modifications apportées à la base esclave seront-elles également répercutées sur la base maître ?

0 votes

Oui tout de suite si la configuration est bonne ! vous pouvez insérer un enregistrement dans le maître et faire une sélection dans l'esclave pour tester. si cela passe, vous êtes prêt !

23voto

Javier Points 33134

Trois approches différentes :

  1. Approche client/serveur classique : ne mettez pas de base de données dans les magasins ; demandez simplement aux applications d'accéder à votre serveur. Bien sûr, il est préférable de mettre en place un VPN, mais il est raisonnable d'envelopper la connexion dans du SSL ou du ssh. Pour : c'est ainsi que les bases de données ont été conçues à l'origine. Contre : si vous avez une latence élevée, les opérations complexes peuvent être lentes, vous devrez peut-être utiliser des procédures stockées pour réduire le nombre d'allers-retours.

  2. répliqué maître/maître : comme @Book Of Zeus l'a suggéré. Contre : un peu plus complexe à mettre en place (surtout si vous avez plusieurs magasins), le fait de casser une machine de magasin pourrait potentiellement compromettre l'ensemble du système. Pour : meilleure réactivité car les opérations de lecture sont totalement locales et les opérations d'écriture sont propagées de manière asynchrone.

  3. opérations hors ligne + étape de synchronisation : faire tout le travail localement et de temps en temps (une fois par heure, par jour, par semaine, peu importe) écrire un résumé avec tous les enregistrements nouveaux/modifiés de la dernière opération de synchronisation et l'envoyer au serveur. Avantages : peut fonctionner sans réseau, rapide, facile à vérifier (si le résumé est lisible). Contre : vous n'avez pas d'informations en temps réel.

10 votes

J'ai besoin de configurer le troisième type de synchronisation de la base de données (opérations hors ligne + synchronisation), j'aimerais en savoir plus à ce sujet. Je n'ai pas réussi à trouver cette information sur Google. Y a-t-il un livre/article auquel je peux me référer ?

11voto

Komoo Points 11

SymmetricDS est la réponse. Il prend en charge plusieurs abonnés avec une réplication de données asynchrone unidirectionnelle ou bidirectionnelle. Il utilise des technologies web et de base de données pour répliquer des tables entre des bases de données relationnelles, en temps quasi réel si nécessaire.

Une API Java complète et robuste pour répondre à vos besoins.

0 votes

Si j'ai un serveur interne avec une base de données séparée dans une zone sans internet, et que j'ai des acheteurs en ligne sur une base de données hébergée sur le web et que je veux migrer les achats de la base de données interne vers le live, pouvez-vous me dire ce qu'il adviendra des incréments automatiques entre les deux s'ils réservaient tous les deux le même identifiant, ce sera le désordre, n'est-ce pas !

1voto

Devart Points 52715

Jetez un coup d'œil à Outils de comparaison des schémas et des données dans dbForge Studio for MySQL. Ces outils vous aideront à comparer, à voir les différences, à générer un script de synchronisation et à synchroniser deux bases de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X