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 :

Repartition de charge (maitre-esclave)


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut Repartition de charge (maitre-esclave)
    Bonjour a tous,
    J'ai mis en place un maître et un esclave sur une grosse base de données contenant environ 1Milion de lignes.
    Le fonctionnement est simple, un serveur JBoss qui échange beaucoup avec la BDD (INSERT,DELETE,UPDATE) afin de la mettre à jour et une application web qui interroge celle-ci (SELECT) ainsi que des administrateurs.

    J'ai tout configuré pour que la relation entre JBoss et la BDD soit faite avec le maître et les relations de lecture (application Web et admin) soit faite avec l'esclave pour permettre aux administrateurs d'effectuer des tests sur la BDD sans attendre pendant 1min.

    Le problème est que j'ai lancé un script Perl de test sur le maître qui fait un UPDATE sur l'ensemble des entités de la table et en parallèle j'ai fait un SELECT sur la table esclave. Je remarque que la configuration en sert a rien puisque le maître copie instantanément les données sur l'esclave qui effectuer les mêmes requêtes pour mettre à jour sa BDD. Par conséquent ma requête SELECT sur le serveur ESCLAVE est coincé par la surcharge du serveur.

    Quelle est la solution ?
    Faut-il retarder la copie des données entre le maître et l'esclave afin de pouvoir interrogé l'esclave pendant la mis à jour du maître ?

    Je ne vois pas comment il est possible de repartir la charge avec cette méthode que j'ai bien implémentée ?

    Merci de votre aide et bonne journée

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mars 2005
    Messages : 95
    Par défaut
    Bonjour,
    vous pouvez essayer de paramétrer votre réplication en mode "row-based replication", plutôt que "statement-based replication"

    Comme c'est de la réplication par ligne, ca devrait moins locker l'esclave, plutôt que de rejouer l'update entier sur l'esclave.

    #
    Fewer row locks are required on the master, which thus achieves higher concurrency, for the following types of statements:

    Fewer row locks are required on the slave for any INSERT, UPDATE, or DELETE statement.

    Pour cela il faut modifier le paramètre du master:
    SET GLOBAL binlog_format = 'ROW';
    ou le changer dans le my.cnf



    Sebastien

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut
    Bonjour,
    Merci pour ton aide slefevre01, je vais essayé sa tout de suite est effectué des test.
    Cependant je me demande si la réplication est utile pour améliorer les performances avec des besoins de 50% voir 60% écriture et 50% lecture. En effet j'ai vu que la réplication améliore les performances plutot pour des applications avec des besoins 90%lecture et 10% écriture.
    Quelqu'un aurait des idées autre que la réplication pour améliorer les performances (vues, triggers, partitionnement) ?


    Merci de votre aide et bonne journée.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut
    Voila je viens de finir les tests avec ta solution slefevre01, mais seulement une amélioration de 5min sur un update de 1h qui ne m’intéresse donc pas tellement.
    Je me trouve donc complètement bloqué et ne sais comment faire après avoir parcouru une multitude d'articles et des recherches Google.

    J'attends et vos réponses et continue de nombreux tests.

    merci de votre aide

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2005
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mars 2005
    Messages : 95
    Par défaut
    Bonjour,
    Un batch d'update d'1h ne doit pas tourner en journée. Ne pas mélanger batch et oltp en journée.

    Effectivement, suivant votre traitement, les triggers peuvent être une solution (update au fil de l'eau plutôt qu'update massif).

    Cdlt,

    Sébastien

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2011
    Messages : 4
    Par défaut
    Mais il est obligé de tourner durant la journée puisque la BDD est "update" tout au long de la journée et même le soir avec des scripts qui tournent en background.

    C'est pour cela que je me demande si l'utilisation de triggers pourra résoudre cela !! Plutôt la partitionnement non ?

Discussions similaires

  1. Clustering de repartition de charges
    Par Syntax-ERROR dans le forum Réseau
    Réponses: 1
    Dernier message: 03/04/2008, 20h34
  2. confusion entre maitre/esclave et client/serveur
    Par firaponte dans le forum Développement
    Réponses: 4
    Dernier message: 03/01/2008, 12h11
  3. repartition de charge avec dns round robin
    Par rvfranck dans le forum Administration système
    Réponses: 2
    Dernier message: 25/05/2007, 10h16
  4. Réponses: 5
    Dernier message: 12/12/2005, 18h42
  5. relation maitre/esclave entre 2 BDD sur MySQL?
    Par root76 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 14/10/2005, 14h37

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