Después de leer Uso de la replicación para escalar horizontalmente , ¿cómo puedo enrutar diferentes consultas a diferentes servidores? Por ejemplo, SELECT
quiero enrutar a esclavos y NON-SELECT
a maestros. Supongo que como Loadbalancer puedo usar haproxy , pero no encontré que sea posible distinguir entre consultas en el nivel de haproxy . Además, supongamos que alguien ha llegado al maestro directamente, ¿cómo puede el maestro identificar que se trata de una SELECT
consulta y un programa para enviarlo al esclavo o al equilibrador de carga?
8
Es el trabajo que
web client
debe determinar si una transacción que está a punto de enviar a la base de datos esread-only
oread-write
elegir su designadoslave
o elmaster
correspondiente.fuente
No conozco ningún software proxy que haga esto por usted. haproxy es un proxy de nivel HTTP, esto no tendrá ningún impacto en su base de datos. Deberá implementar esto como parte de la lógica empresarial de su aplicación web.
En el corazón de su capa de persistencia, debe poder interceptar estas llamadas y "enrutarlas" a la base de datos apropiada en función del tipo de transacción que se ejecuta. Por ejemplo, las
SELECT
consultas podrían enviarse a sus servidores de solo lectura, pero lasUPDATE/INSRET/DELETE
consultas se enviarían al servidor maestro.fuente