You are not logged in.

  • Login

1

Saturday, December 12th 2009, 1:38pm

mySQL master master Replikation - Auto-ID-Inhaltsfeldern

Hallo,

ich betreibe zur Zeit 3 Server, die folgende Aufgaben haben:

S0: Systemserver, Vernetzung, Firewall, Proxy, Cache-Server, Apache2-Master, mySQL-Master
S1: Backendserver, Apache2-Slave, mySQL-Master, NFS-Master
S2: Backendserver, Mediaserver (FFMPEG, Imagemagick), Apache2-Slave, mySQL-Master, NFS-Slave

Die mySQL-Replikation ist zur Zeit so aufgebaut: S0 <> S1 <> S2 <> S0 - Also als Ring-Replikation, Master-Master.

Leider gibt es immer wieder Fehler mit den Auto-ID-Inhaltsfeldern, da es zu überschneidungen kommt. Die Möglichkeit des Offsets hat leider auch nicht geholfen.

Nun meine Frage: Hat jemand eine bessere Idee? Ein mySQL-Cluster kommt nicht in Frage, da ich FULLTEXT benötige.

2

Saturday, December 12th 2009, 9:46pm

Hi,

da es zu überschneidungen kommt. Die Möglichkeit des Offsets hat leider auch nicht geholfen.

Wie meinst du das? Zu welchen Konflikten kommt es?
Wenn du mit den replikations offset Parametern arbeitest dann fügt Server1 (bei Schrittweite 5): 1, 6, 11, 16, ... ein und Server2 nutzt 2, 7, 12, ...
Damit kann es zu keinen Replikationsfehlern kommen.

Was willst du mit deiner Architektur erreichen? Multi Master ganz ohne MySQL Slave? Hast du mehr Writes als Reads?
Da ich weiß dass du das WCF nutzt, vermute ich fast, dass die den Multi Master nur gewählt hast, weil die Anwendung nicht zwischen Master und Slave unterscheiden kann. Hier würde ich dir einen MySQL Proxy empfehlen, der Writes und Reads auf jeweils andere Server leitet.

3

Sunday, December 13th 2009, 11:33am

Hi,

es kommt zu einem Insert-Konflikt bei den ID's. Mit den offset-Parametern habe ich breits gearbeitet und wie oben schon erwähnt, ohne Erfolg - Wieso genau, kann ich mir auch nicht erklären.
Das mySQL-System wird zugleich mit Writes und Reads belastet.

Diese Architektur habe ich gewählt, da ich zwei Backendserver (S1, S2) habe, die die Webseite im Apache2-Cluster ausliefern und so jeder Backendserver seinen eigenen mySQL-Server haben sollte (Lastverteilung).


Da ich mir Gestern mySQL 5.1 aus den Debian-Backports geholt und erfolgreich installiert habe, mal eine Frage zum neuen mySQL-Cluster: Bestehen dort immer noch die Nachteile von FULLTEXT und Datenverlust? Leider habe ich in der Dokumentation von Sun nichts gefunden.

This post has been edited 1 times, last edit by "Gnex" (Dec 13th 2009, 12:26pm)


4

Sunday, December 13th 2009, 4:35pm

Werfen wir nicht zu viele Fragen auf einmal auf..

Also den Insert Konflikt musst du nochmal beschreiben. Irgendeine Fehlermeldung musst du ja gesehen um zur Folgerung zu kommen, dass es nicht funktioniert hat.
Hast du MySQL denn nach dem Setzen der Variable neugestartet? Wenn du nur einen Server im Cluster hattest, sind die Auto Increment dann wie beschrieben mit den Intervall werten hochgezählt worden?

Du musst sowohl auto-increment-offset als auch auto-increment-increment setzen. Der auto-increment-increment muss überall gleich sein (z.B. 5) - auto-increment-offset setzt du am besten auf die ServerID (ACHTUNG: Zählung beginnt bei 1)

5

Sunday, December 13th 2009, 5:14pm

"auto-increment-offset" und "auto-increment-increment" sind - wie schon beschrieben - gesetzt. Ich habs mal auf deinen Vorschlag geändert, jedoch kommt der "Standardfehler":

Dublicate entry 'XXX' for key ...

6

Tuesday, December 22nd 2009, 1:19pm

Ich habe heute wieder die Replikation neu aufgesetzt, da es wieder so viele Fehler waren, dass es unmöglich ist, diese Manuell zu beseitigen.

7

Tuesday, December 22nd 2009, 4:19pm

und zählen die auto increment werte, wenn du nur einen master im load balancing hast jetzt in 5er schritten?

Similar threads

Social bookmarks