Nachdem ich " Replikation für Scale-Out verwenden" gelesen habe , wie kann ich verschiedene Abfragen an verschiedene Server weiterleiten, z. B. SELECT
möchte ich an Slaves und NON-SELECT
Master weiterleiten . Ich gehe davon aus, dass ich als Loadbalancer Haproxy verwenden kann , aber ich habe nicht festgestellt , dass es möglich ist, zwischen Abfragen auf der Ebene von Haproxy zu unterscheiden . SELECT
Nehmen wir außerdem an, jemand hat den Master direkt erreicht. Wie kann der Master feststellen, dass es sich um eine Abfrage handelt, die an den Slave oder an den Loadbalancer gesendet wird?
8
Es ist Ihre Aufgabe,
web client
zu bestimmen, ob eine Transaktion, die an die Datenbank gesendet werden soll,read-only
oder ist,read-write
undslave
diemaster
entsprechende oder die entsprechende zu wählen .quelle
Mir ist keine Proxy-Software bekannt, die dies für Sie erledigt. Haproxy ist ein Proxy auf HTTP-Ebene. Dies hat keine Auswirkungen auf Ihre Datenbank. Sie müssen dies als Teil der Geschäftslogik Ihrer Webanwendung implementieren.
Im Herzen Ihrer Persistenzschicht sollten Sie in der Lage sein, diese Anrufe abzufangen und sie basierend auf der Art der ausgeführten Transaktion an die entsprechende Datenbank weiterzuleiten. Beispielsweise
SELECT
könnten Abfragen an Ihre schreibgeschützten ServerUPDATE/INSRET/DELETE
gesendet werden, aber Abfragen würden an den Master-Server gesendet.quelle