2010-05-10 1 views
2

Dans un environnement de réplication maître-esclave MySQL, si j'ai 4 serveurs esclaves, comment puis-je exécuter des requêtes de sélection de charge équilibrée?Réplication MySQL - Dois-je gérer l'équilibrage de charge à partir de mon code client (PHP)?

Dois-je écrire une classe PHP pour traiter les 4 esclaves ou est-il possible d'adresser des requêtes à la propre solution d'équilibreur de charge de MySQL? Existe-t-il une solution d'équilibrage de charge MySQL? Puis-je utiliser un autre outil pour distribuer mes requêtes? Quelle est la configuration typique dans des situations comme celle-ci?

Merci pour toutes les réponses!

Répondre

3

La pratique courante serait de configurer quelque chose comme ldirectord devant votre cluster mysql pour fournir une adresse IP virtuelle en tant qu'adresse de charge équilibrée pour le cluster, cela pourrait ensuite distribuer vos requêtes aux différents serveurs mysql. Cela nécessiterait un routage ipvs qui peut/ne peut pas être exagéré pour votre situation spécifique, il se peut que le contrôle php de l'équilibrage de charge convienne à ce que vous essayez d'atteindre.

2

Oui et non.

Il y a vraiment deux questions auxquelles il faut répondre:

  1. cette requête devrait aller à un esclave, ou le maître db?
    • Cette logique devrait probablement être en PHP. Il y a souvent des cas où vous devez avoir les données les plus fraîches absolues, qui ne peuvent pas être obtenues d'un esclave. Par exemple, si un utilisateur modifie une page, vous devez créer la page mise à jour à partir de la base de données master - les modifications de l'utilisateur ne l'ont peut-être pas encore abouti. Ceci est très spécifique à l'application, donc les outils tiers peuvent ne pas être capables de le faire pour vous.
  2. Quel esclave cette requête doit-elle contenir?
    • Ceci, vous n'avez probablement pas besoin d'écrire vous-même - ce n'est pas vraiment important pour votre application quel esclave spécifique traite une demande. Les outils existants devraient gérer cela bien.
Questions connexes