PHP-Entwicklung
Posts 11-12 of 12
- Back
- Next
-
Lars KneschkeThe company name is only visible to registered members.Re^3: Ich würde es begrüßen, wenn die MySQL-Extensions automatisch Master-Slave Splits machen....
Hallo Ulf!
Zufällig haben wir das Thema letztens auch zufällig diskutiert.
Eine Lösung im Treiber hätte den Vorteil das man die Applikation nicht anpassen muss. Allerdings ist mir unklar ob das technisch umsetzbar ist.
Technisch sehe ich 2 Use Cases, die so eine Extension hergeben müsste, damit sie Minimalanforderungen erfüllt.
Einmal das Verteilen der Leseoperation. Das erscheint mir sehr einfach.
Der 2. Use Case ist das man einen Datensatz in die Datenbank schreibt, vielleicht in mehrere Tabellen und daher in mehreren Queries und die Daten danach sofort wieder auslesen möchte um sicherzustellen das sie auch richtig in der Datenbank angekommen sind. In diesem Fall müssen die ganzen Operationen natürlich auf einem Server landen, da man sonst eventuell wegen Replikationsverzögerungen nicht die richtigen Daten zurückbekommt.
Lars
- 25 Feb 2011, 1:58 pm
-
Ulf Wendel Premium MemberThe company name is only visible to registered members.Re^4: Ich würde es begrüßen, wenn die MySQL-Extensions automatisch Master-Slave Splits machen....
Moin Lars,
die beiden Anwendungsfälle lassen sich lösen.
Leseanfragen erkennen und verteilen ist kein großer Akt. Ich denke, es genügt für den Anfang automatisch alles, was kein SELECT ist, auf den/die Master zu schicken. Wenn Du ein CALL oder ähnliches auf einem Slave halten willst, ist es an Dir dies dem Datenbanktreiber mitzuteilen.
Wenn Du eine kritische Schreiboperation hast, deren Ergebnisse sofort wieder gelesen werden, hast Du drei Optionen: Du bleibst auf dem Master, deine Slaves haben keinen Replikationslag oder Du machst Flickwerk (Binlog Position überwachen, selbstverwaltete Dokumentenrevisionen, ...). Von Flickwerk will ich nichts wissen. Deine Slaves kann ich nicht beeinflussen. Bleibt mir nur Dir anzubieten, daß Du kritische Sequenzen gezielt auf dem Master ausführst.
Hatte man in 5.5 die semi-synchrone Replikation etwas schauer gebaut, dann wüsste ich im Client welcher Slave nicht zurückliegt und könnte Dir eine sinnvolle Lösung anbieten.
Ulf
- 25 Feb 2011, 4:01 pm
- Back
- Next
