KartoffelKiffer Geschrieben 6. März 2008 Teilen Geschrieben 6. März 2008 Hallo, es geht hier in diesem Beitrag um die Replikation mehrerer Slave-Systeme auf ein Master-System. Mein Problem beläuft sich auf die Indizierung meiner bestehenden Slave-Systeme. Im Anhang habe ich eine kleine Grafik anbei gefügt, die die Struktur einmal kurz zeigen soll. Prinzipiell kann man es so verstehen: Es existiert ein Baum, der mehrere Äste haben kann. Der wiederum kann mehrere Zweige haben, an dem wieder n Blätter hängen. Jede Tabelle ist mit der Elterntabelle verbunden. Ein Blatt hat also eine Zweig-ID, ein Zweig eine Ast-ID usw. Ist es mittels MySQL-Tools nun irgendwie möglich, eine automatische Replikation meiner Slave-Systeme auf ein Master-System zu vollziehen, die folgendes berücksichtigt: Die Slave-Systeme sind vom Aufbau her identisch, genau wie das Master-System auch. Sogar die Versionen von MySQL werden gepflegt. Habe ich nun im Slave-System 1 einen Baum mit der ID 123, so hat dieser einen Ast mit der ID 111 und einen mit ID 112 usw., besteht nun die große Warscheinlichkeit, dass im Slave-System 2 ebenfalls ein Baum mit der ID 123 besteht, nur vielleicht mit verschiedener Anzahl Äste, Zweige und Blätter. Nun steht in jedem Ast die ID des Baumes. Trage ich aus dem Slave-System 1 nun meine Äste in das Master-System ein, so bestehen Äste mit der Baum-ID 123 aus Slave-System 1 UND Slave-System 2. Die Baum-ID 123 lautet nun aber auch völlig anders. Die ID im Master-System wird per auto_increment automatisch um eins erhöht. Sie kann also für den Baum mit der ID "123" aus dem Slave-System 1 "87625" lauten, und aus dem Slave-System 2 "5". Es muss also dafür gesorgt werden, dass der Foreign-Key (die ID des Baumes) der Äste automatisch den Wert erhält, der dem neuen Baum in dem Master-System zugewiesen wurde. Auch die ID´s der Äste sind different als in dem Slave-System, also müssen auch die Zweige von den neuen ID´s benachrichtig werden, genauso wie die Blätter auch. Eine MySQL-Replikation muss also davon unterrichtet werden wie die Zusammenhänge der Datenbank aussieht. In meinem Fall doch recht einfach 1 zu n, da ein Baum n Äste haben kann, n Äste aber wiederum zu einem Baum gehören usw. Ich hoffe mein Problem ist klar dargestellt, und es gibt eine Lösung dafür. So speziell ist die Frage hoffe ich nicht, alsdass MySQL dafür keine Lösung hat. Mfg Tom Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 7. März 2008 Teilen Geschrieben 7. März 2008 Hallo, MySQL kann zumindest in der alten Version nur von einem Master zu mehreren Slaves replizieren. Wenn man also auf einem Slave eine Änderung macht, dann wird diese nicht repliziert. Diese erzeugt höchstens inkonsistente Daten. Ob bei der neuen Version eine Slave-Master Replikation funktioniert habe ich jetzt nicht kontrolliert. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KartoffelKiffer Geschrieben 11. März 2008 Autor Teilen Geschrieben 11. März 2008 Hallo, mein Problem besteht immernoch. Darum spezifiziere ich etwas genauer. Es existieren mehrere Rechner, in die Daten stets lokal eingeschleust werden. Diese Rechner sollen ihre Daten auf eine zentrale MySQL-Datenbank replizieren. Ich weiß es gibt die Möglichkeit von auto_increment_increment und auto_increment_offset. Wenn ich also an jedem Rechner in der Datenbank einen auto_increment_offset von 1-n (Rechnernummer) setze und einen auto_increment_increment von 1000, so müsste das Problem der Foreign-Key Verwaltung gelöst sein. Ein Beispiel: Rechner 1: auto_increment_increment = 1000 auto_increment_offset = 1 ------------------------ Rechner 2: auto_increment_increment = 1000 auto_increment_offset = 2 Rechner 1 produziert also Daten 1, 1001, 2001, 3001 usw., Rechner 2 produziert 2, 1002, 2002 usw. Jetzt muss ich diese Daten nur noch in die Master-Datenbank bekommen. Mit dem Replikationsverfahren habe ich mich nun zu genüge auseinander gesetzt. Das Prinzip funktioniert so nicht. Ich MUSS die Daten lokal in den Rechner schreiben, und von der lokalen Datenbank ein Abbild auf dem Server erstellen. Das Replikationsverfahren allerdings verlangt ein Schreiben in den Server (Master) und das Replizieren auf die lokalen Rechner. Ich hoffe die ganze Geschichte ist jetzt etwas klarer und mir kann geholfen werden. // Edit: Im Prinzip benötige ich eine Replikation VON einem Slave-Server IN einen Master-Server. Also genau andersherum, wie es die Replikation unter MySQL vorsieht. Es gibt auch sogenannte Master-Master Replikationen, wo beide als Master und beide als Slave fungieren. Das funtioniert allerdings nur bei zwei Rechnern. Ich habe aber n Slave-Systeme und immer einen Master-Rechner. Mfg Tom Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. März 2008 Teilen Geschrieben 11. März 2008 Drehen wir die Frage mal um. Warum werden die Daten lokal in einem Slave importiert und keine Verbindung zum Master hergestellt und dort reingeschoben? Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
KartoffelKiffer Geschrieben 11. März 2008 Autor Teilen Geschrieben 11. März 2008 Ganz einfach, weil die Daten lokal immer verfügbar sein müssen, egal ob eine Netzwerkverbindung besteht, oder nicht. Wenn sie auf einen Master geschoben werden, der dezentral irgendwo im Netzwerk steht, dann muss stets eine Verbindung bestehen, sonst sieht man lokal die Daten erstmal nicht. Da würde vielleicht folgende Frage aufkommen: Wieso kann ich die Daten nicht lokal einsehen, wenn sie doch lokal produziert wurden? Die Antwort würde dann lauten: Weil wir die Daten erst einmal über das Netzwerk an eine Zentrale senden, damit sie lokal wieder repliziert werden können. Ich verstehe schon wie Du das meinst, das war auch mein erster Gedanke, aber versuch das mal logisch wem klar zu machen. Darum fahre ich auch nicht auf dieser Schine. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.