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, SELECT
je veux router vers des esclaves et NON-SELECT
vers 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 SELECT
requête et montrer qu'il doit être envoyé à l'esclave ou à l'équilibreur de charge.
8
C'est à vous
web client
de déterminer si une transaction qu'elle est sur le point d'envoyer à la base de données estread-only
ouread-write
et de choisir sa désignationslave
ou lamaster
conséquence.la source
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
SELECT
requêtes pourraient être envoyées à vos serveurs en lecture seule, mais desUPDATE/INSRET/DELETE
requêtes seraient envoyées au serveur maître.la source