Verwenden der Replikation für das Scale-Out


8

Nachdem ich " Replikation für Scale-Out verwenden" gelesen habe , wie kann ich verschiedene Abfragen an verschiedene Server weiterleiten, z. B. SELECTmöchte ich an Slaves und NON-SELECTMaster 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 . SELECTNehmen 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?

Antworten:


3

Es gibt ein Projekt namens MySQL Proxy , das versucht, die Lese- / Schreibaufteilung in der Proxy-Schicht zu handhaben, aber nicht produktionsbereit ist. Weitere Informationen zu den Problemen finden Sie auf dieser Seite . Beachten Sie dabei den Abschnitt über bekannte Probleme.

Wie andere bereits bemerkt haben, müssen Sie vorerst das Routing durch Ihre Anwendung übernehmen.


In ähnlicher Weise (aber ich glaube, ist produktionsbereit): scalebase.com/solution/architecture
Nick Chammas

2

Es ist Ihre Aufgabe, web clientzu bestimmen, ob eine Transaktion, die an die Datenbank gesendet werden soll, read-onlyoder ist, read-writeund slavedie masterentsprechende oder die entsprechende zu wählen .


2

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 SELECTkönnten Abfragen an Ihre schreibgeschützten Server UPDATE/INSRET/DELETEgesendet werden, aber Abfragen würden an den Master-Server gesendet.


Haproxy ist ein TCP-Load-Balancer und kann für andere Protokolle, einschließlich MySQL, verwendet werden, obwohl dies möglicherweise nicht die beste Wahl ist.
Aaron Brown
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.