Depois de ler Usando a replicação para expansão , como posso rotear consultas diferentes para servidores diferentes, por exemplo, SELECT
quero rotear para escravos e NON-SELECT
mestre. Presumo que, como loadbalancer , posso usar haproxy , mas não achei possível diferenciar entre consultas no nível de haproxy ? Além disso, digamos que alguém tenha alcançado o mestre diretamente, como o mestre pode identificar que isso é SELECT
consulta e mostrar que é enviado ao escravo ou ao loadbalancer.
8
É o seu trabalho
web client
determinar se uma transação que está prestes a enviar ao banco de dados éread-only
ouread-write
e escolhe a designadaslave
ou a correspondentemaster
.fonte
Não conheço nenhum software proxy para fazer isso por você. O haproxy é um proxy no nível HTTP, isso não terá nenhum impacto no seu banco de dados. Você precisará implementar isso como parte da lógica de negócios do seu aplicativo da web.
No coração da sua camada de persistência, você deve poder interceptar essas chamadas e "rotear" elas para o banco de dados apropriado com base no tipo de transação que está sendo executada. Por exemplo, as
SELECT
consultas podem ser enviadas para os servidores somente leitura, mas asUPDATE/INSRET/DELETE
consultas são enviadas para o servidor mestre.fonte