IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration MySQL Discussion :

Réplication bidirectionnelle sur N bases


Sujet :

Administration MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Réplication bidirectionnelle sur N bases
    Bonjour à tous !

    Je m'adresse à vous aujourd'hui pour vous faire part de mon petit ( gros ) problème:

    Je suis actuellement en train de développer une application en C# de génération d'offre commerciales pour un entreprise, le principe est simple, on sélectionne un client et des produit et cela génère un fichier word avec l'offre.
    Le petit soucis c'est que ce logiciel fonctionnera principalement sans avoir accès à la base de donnée globale, car les utilisateurs n'auront généralement pas accès à internet. Une base de donnée locale est donc installée avec l'application

    C'est là que les choses coincent, je voudrais avoir une base de données principale avec toutes les données, c'est sur cette base que seront ajoutés les produit, mais les client, seront quand à eux, ajoutés/modifiés à partir des bases locales et les clients présents sur les bases locales seront limités au secteur de l'utilisateur ( un utilisateur qui ne s'occupe pas du secteur du Sud/ouest n'as pas les client présents dans le sud/ouest dans sa base locale).

    J'avais donc plusieurs pistes:

    -1) Enregistrer les requêtes sql effectuées en local dans un fichier et les lancées sur la base globale une fois que l'utilisateur lance la synchronisation, puis "dumper" la totalité de la base globale sur la locale et supprimer les clients qui ne le concerne pas. Ou alors, à la place du dump, mettre en place un réplication unidirectionnelle avec en base maître la globale et les locales seraient des esclaves

    - 2) Mettre en place une réplication bidirectionnelle entre la base globale et chaque base locale mais après quelques recherches j'ai pas l'impression que cela est possible.


    J'espère que quelque avec plus d'expérience que mon petit DUT informatique fraichement acquis pourras me donner quelque pistes

    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 390
    Points : 465
    Points
    465
    Par défaut
    Bonjour.

    1) Cela me semble le plus "facile" à mettre en place.

    2) La réplication bidirectionnelle est possible à mettre en place (voir lien plus bas). Le problème dans ton cas c'est que tu dois changer de maitres pour ton serveur central toutes les x secondes, et donc garder quelque part le dernier positionnement par rapport au serveur locale. C'est possible mais tu risque d'avoir beaucoup erreurs de replication. Si tu veux te lancer la dedans, des outils comme MMM peuvent t'aider. Tu devras peut être activer des options dans tes fichiers de config que je te conseille de ne pas activer slave-skip_errors


    Dans les deux cas, je te conseille d'activer les options de multi maitres de replications cf ici

    Quelques remarque par rapport à ce que tu as dit :
    partir des bases locales et les clients présents sur les bases locales seront limités au secteur de l'utilisateur ( un utilisateur qui ne s'occupe pas du secteur du Sud/ouest n'as pas les client présents dans le sud/ouest dans sa base locale).
    Personnellement, je limiterais l'affichage au niveau applicatif au lieu de vouloir bidouiller les bases. Cela sera plus facile quand tu voudras depanner la réplication d'avoir des bases alignés.

    Un outil payant qui peu bien servir lorsque l'on administre un gros réseau de replication mysql : dbbalance


    Je serais ravi de discuter avec toi si tu as d'autres questions
    La connaissance s'accroit lorsqu'on la partage.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Merci pour cette réponse très complète, je pense que je vais choisir l'option 1 car je doit privilégier un maximum la robustesse du logiciel puisque qu'une fois lancé, je ne serais plus dans l'entreprise pour le maintenir et l'administrer =/

  4. #4
    Membre extrêmement actif Avatar de ddoumeche
    Homme Profil pro
    Ingénieur recherche et développement
    Inscrit en
    Octobre 2007
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Singapour

    Informations professionnelles :
    Activité : Ingénieur recherche et développement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 676
    Points : 2 009
    Points
    2 009
    Par défaut
    1/ Ne pas réinventer la roue, il existe quantité de mécanisme de réplications entre bases de donnée, que ce soit pour mysql (natif) ou sql server
    Sinon, il faut:
    -soit loguer les requêtes modifiantes uniquement
    -soit ne synchroniser que les données modifiés depuis la dernière synchro,
    donc ajoute run champs lastupdate DATE not null, et ne faire que des effacement logiques
    -lancer la synchronisation dans les deux sens à moment T
    -éviter les collisions de clée (hint : le offset) : si deux commerciaux déconnectés créé un client, il ne doit pas avoir le même id

    bon courage

    Pour le filtre selon certains critères de region, il est évident que la base nomade sera plus rapide si elle ne contient que ce qu'elle doit afficher. Et pas la région d'à côté. La gestion de la cohérence peut être plus complexe

    2/ c'est possible mais mysql-mmm par exemple ne doit tourner que sous linux.
    La joie de l'âme est dans la planification -- Louis Hubert Liautey

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réplication en temps réel sur deux bases en Standard
    Par Le-DOC dans le forum Administration
    Réponses: 31
    Dernier message: 09/12/2013, 10h10
  2. Filtre sur une base Paradox
    Par mika dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/03/2004, 11h51
  3. Alter user sur une base distante
    Par bilo2000 dans le forum Administration
    Réponses: 13
    Dernier message: 09/03/2004, 17h18
  4. calcul d'un point sur la base d'un cone
    Par Admin dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 18/11/2003, 21h18
  5. [Crystal] Performance sur grosses base de données
    Par Nico118 dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 14/11/2003, 15h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo