Utilisation de la réplication pour la mise à l'échelle

8

Après avoir lu Utilisation de la réplication pour la mise à l'échelle , comment puis-je acheminer différentes requêtes vers différents serveurs, par exemple, SELECTje veux router vers des esclaves et NON-SELECTvers un maître. Je suppose qu'en tant qu'équilibreur de charge, je peux utiliser haproxy , mais je n'ai pas trouvé qu'il était possible de distinguer les requêtes au niveau de haproxy ? De plus, disons que quelqu'un a atteint directement le maître, comment le maître peut-il identifier qu'il s'agit d'une SELECTrequête et montrer qu'il doit être envoyé à l'esclave ou à l'équilibreur de charge.

com
la source

Réponses:

3

Il existe un projet appelé MySQL Proxy qui tente de gérer le fractionnement en lecture / écriture dans la couche proxy, mais il n'est pas prêt pour la production. Vous pouvez en savoir plus sur les problèmes sur cette page , en faisant attention à la section des problèmes connus.

Pour l'instant, comme d'autres l'ont noté, vous devez gérer le routage via votre application.

Derek Downey
la source
Dans la même veine (mais, je crois, est prêt pour la production): scalebase.com/solution/architecture
Nick Chammas
2

C'est à vous web clientde déterminer si une transaction qu'elle est sur le point d'envoyer à la base de données est read-onlyou read-writeet de choisir sa désignation slaveou la masterconséquence.

Raihan
la source
2

Je ne connais aucun logiciel proxy pour le faire pour vous. haproxy est un proxy de niveau HTTP, cela n'aura aucun impact sur votre base de données. Vous devrez l'implémenter dans le cadre de la logique métier de votre application Web.

Au cœur de votre couche de persistance, vous devriez pouvoir intercepter ces appels et les "acheminer" vers la base de données appropriée en fonction du type de transaction en cours d'exécution. Par exemple, des SELECTrequêtes pourraient être envoyées à vos serveurs en lecture seule, mais des UPDATE/INSRET/DELETErequêtes seraient envoyées au serveur maître.

Nate
la source
haproxy est un équilibreur de charge TCP et peut être utilisé pour d'autres protocoles, y compris MySQL, bien qu'il ne soit pas le meilleur choix.
Aaron Brown