Zvoni
Erfahrenes Mitglied
Hallo zusammen,
dachte ich frage mal hier, bevor ich mich in einem MySQL-Forum registriere.
Kennt sich hier jemand mit der GROUP REPLICATION von MySQL8 aus?
Vorweg: Ja, ich habe die Manuals auf dev.mysql.com zu dem Thema gelesen, aber ich konnte nirgends eine definitive Antwort finden.
Szenario:
ich weiss dass ich für GR unter MySQL8 mindestens drei Server (-Instanzen) benötige. Die habe ich auch (bzw. die werde ich haben --> Zukunft). Gleiche MySQL-Version auf allen 3 Servern setze ich voraus. Variante ist "multi-primary"
Das ganze Setup und die config ist soweit klar,
ABER (und darauf konnte ich keine definitive Antwort finden):
Die Manuals besagen, dass wenn ein GR-Verbund feststellt, dass ein Server nicht mehr antwortet (weil die Putzfrau die Steckdose gebraucht hat...), die verbleibenden Server nach einer gewissen Zeit eventuell zu einem Konsens kommen, und den "fehlenden" Server aus dem Verbund kicken.
Wenn dieser Server nach gewisser Zeit (wie lange auch immer) wieder zurückkommt ("Hi Jungs, i'm back"), besagen die Manuals auch, dass von den verbleibenden Servern ein "donor" gewählt wird, und den Rückkehrer "updatet"
Was ist aber, wenn es genau anderst herum ist?
Hintergrund (Alles explizit/exklusiv in lokalem LAN - nix Internet)
Wir haben (bzw. werden haben) im Einsatz drei MySQL-Server/Instanzen:
S2 und S3 im Serverraum, laufen 24/7, 1 Laptop (=S1)
Auf S2 verbinden sich zwei Kunden-Clients per Intranet-Webseite (Apache etc. lauft auf S2). an S2 finden gemeinhin nur INSERTS statt.
Auf S3 verbinden sich Windows-Clients per propriertärer Software. Nur Lesen (Ist für unsere Anzeige-Tafel)
Auf S1 findet der meiste Traffic statt: Auf S1 (=Laptop) haben wir eine kommerzielle Client-Server-Software, welche auf die lokale ( !! ) MySQL-Instanz des Laptops zugreift, und zwar das volle Brett (CRUD).
Die Idee hinter der GROUP-REPLICATION war, den Traffic für den Laptop zu verringern bzw. auch Backups der Daten zu haben.
Und jetzt der Knackpunkt: Wie es die Natur eines Laptops nunmal ist, wird dieser an Feierabend heruntergefahren, in die Tasche gesteckt, und mit nach Hause genommen (BANG --> S2+S3: "huh? Wo ist Kollege S1?"...*Zeitvergeht*....S2+S3: "OK. Der antwortet nicht mehr." *rauskick*)
Jetzt wird jedoch in dieser "off"-Zeit (die zum Teil mal auch mehr als eine Woche sein kann), Datensätze auf S1 weiter generiert, verändert, gelöscht, das volle Programm.
In dieser "off"-Zeit besteht keinerlei Kontakt zwischen S1 und seinen beiden anderen Kollegen.
Jetzt kommt nach der Off-Zeit Kollege S1 wieder zurück, und meldet sich bei den anderen beiden "Hi, bin wieder da" (Wie macht er das?).
Verstehen S2+S3 jetzt, dass S1 die aktuellsten Daten hat?
Hinweis: Während der Off-Zeit findet absolut keine Veränderung am Datenbestand von S2+S3 statt.
Die Frage also: Ist die GR so intelligent, zu merken, dass eigentlich S1 seine beiden Kollegen updaten muss, und nicht anderst herum?
ich hoffe ich war verständlich!
P.S.: Mir ist natürlich klar, dass ich dass in einem Testsetup auch testen könnte (per try and error), aber fragen kostet nix, und wenn es mir so die ein oder andere Sackgasse erspart habe ich nur gewonnen
dachte ich frage mal hier, bevor ich mich in einem MySQL-Forum registriere.
Kennt sich hier jemand mit der GROUP REPLICATION von MySQL8 aus?
Vorweg: Ja, ich habe die Manuals auf dev.mysql.com zu dem Thema gelesen, aber ich konnte nirgends eine definitive Antwort finden.
Szenario:
ich weiss dass ich für GR unter MySQL8 mindestens drei Server (-Instanzen) benötige. Die habe ich auch (bzw. die werde ich haben --> Zukunft). Gleiche MySQL-Version auf allen 3 Servern setze ich voraus. Variante ist "multi-primary"
Das ganze Setup und die config ist soweit klar,
ABER (und darauf konnte ich keine definitive Antwort finden):
Die Manuals besagen, dass wenn ein GR-Verbund feststellt, dass ein Server nicht mehr antwortet (weil die Putzfrau die Steckdose gebraucht hat...), die verbleibenden Server nach einer gewissen Zeit eventuell zu einem Konsens kommen, und den "fehlenden" Server aus dem Verbund kicken.
Wenn dieser Server nach gewisser Zeit (wie lange auch immer) wieder zurückkommt ("Hi Jungs, i'm back"), besagen die Manuals auch, dass von den verbleibenden Servern ein "donor" gewählt wird, und den Rückkehrer "updatet"
Was ist aber, wenn es genau anderst herum ist?
Hintergrund (Alles explizit/exklusiv in lokalem LAN - nix Internet)
Wir haben (bzw. werden haben) im Einsatz drei MySQL-Server/Instanzen:
S2 und S3 im Serverraum, laufen 24/7, 1 Laptop (=S1)
Auf S2 verbinden sich zwei Kunden-Clients per Intranet-Webseite (Apache etc. lauft auf S2). an S2 finden gemeinhin nur INSERTS statt.
Auf S3 verbinden sich Windows-Clients per propriertärer Software. Nur Lesen (Ist für unsere Anzeige-Tafel)
Auf S1 findet der meiste Traffic statt: Auf S1 (=Laptop) haben wir eine kommerzielle Client-Server-Software, welche auf die lokale ( !! ) MySQL-Instanz des Laptops zugreift, und zwar das volle Brett (CRUD).
Die Idee hinter der GROUP-REPLICATION war, den Traffic für den Laptop zu verringern bzw. auch Backups der Daten zu haben.
Und jetzt der Knackpunkt: Wie es die Natur eines Laptops nunmal ist, wird dieser an Feierabend heruntergefahren, in die Tasche gesteckt, und mit nach Hause genommen (BANG --> S2+S3: "huh? Wo ist Kollege S1?"...*Zeitvergeht*....S2+S3: "OK. Der antwortet nicht mehr." *rauskick*)
Jetzt wird jedoch in dieser "off"-Zeit (die zum Teil mal auch mehr als eine Woche sein kann), Datensätze auf S1 weiter generiert, verändert, gelöscht, das volle Programm.
In dieser "off"-Zeit besteht keinerlei Kontakt zwischen S1 und seinen beiden anderen Kollegen.
Jetzt kommt nach der Off-Zeit Kollege S1 wieder zurück, und meldet sich bei den anderen beiden "Hi, bin wieder da" (Wie macht er das?).
Verstehen S2+S3 jetzt, dass S1 die aktuellsten Daten hat?
Hinweis: Während der Off-Zeit findet absolut keine Veränderung am Datenbestand von S2+S3 statt.
Die Frage also: Ist die GR so intelligent, zu merken, dass eigentlich S1 seine beiden Kollegen updaten muss, und nicht anderst herum?
ich hoffe ich war verständlich!
P.S.: Mir ist natürlich klar, dass ich dass in einem Testsetup auch testen könnte (per try and error), aber fragen kostet nix, und wenn es mir so die ein oder andere Sackgasse erspart habe ich nur gewonnen