Replikation - ein paar Gedanken/Fragen
Reiner
- datenbank
Hi,
ich habe jetzt eine Circ.Repl. (https://forum.selfhtml.org/?t=140388&m=912230) aufgesetzt und läuft prima.
Jetzt mache ich mir gerade ein paar Gedanken, deren Antworten ich so richtig nicht ergründen konnte.
Nehmen wir an, beide Slaves sind abgeschaltet, d.h. beide Server laufen autark. Von Server A lösche ich alle Daten, bei denen ein bestimmter Wert größer als 100 ist. Parallel dazu importiere ich Daten auf Server B, wo nur Werte größer gleich 100 drin sind.
So, was passiert jetzt, wenn ich beide Slaves wieder einschalte?
Gewollt ist ja, daß der alte Müll weg ist und die neuen Werte importiert sind. Aber kann es sein, daß die neu importierten Werte nach einschalten des Slaves B wieder durch den Befehl, der auf Server A (lösche alle Werte über 100) gelöscht werden?
Wenn das so ist, muß mein dabei ja sehr vorsichtig sein, wer in dem "Ring" Daten schreibt (lesen darf ja jeder).
Gruß
Reiner
ich habe jetzt eine Circ.Repl. (https://forum.selfhtml.org/?t=140388&m=912230) aufgesetzt und läuft prima.
Das zitierte Artikel ist leider nicht verfügbar.
Nehmen wir an, beide Slaves sind abgeschaltet, d.h. beide Server laufen autark. Von Server A lösche ich alle Daten, bei denen ein bestimmter Wert größer als 100 ist. Parallel dazu importiere ich Daten auf Server B, wo nur Werte größer gleich 100 drin sind.
Du willst wissen, was passiert, nun dazu muss man die Implementierung der Replikation genau kennen.
Wenn das so ist, muß mein dabei ja sehr vorsichtig sein, wer in dem "Ring" Daten schreibt (lesen darf ja jeder).
Replikationen haben immer die Tendenz Daten auseinanderlaufen zu lassen, sie sind also potentiell gefährlich. Ich habe bspw. mit den Replikationen für MS SQL Server, die wie vermutlich die MySQL-Repl. auch, über Dienste bzw. Daemons implementiert ist, recht interessante Erfahrungen gemacht.
Habe ich das richtig verstanden, Du hast eine Replikation, die den Datenbestand auf zwei Servern zeitversetzt (möglichst) gleich halten soll und die die Konfliktverwaltung unterstützt?
Das zitierte Artikel ist leider nicht verfügbar.
Jetzt ist er da, werde mir das heute nachmittag mal durchlesen...
Replikationen haben immer die Tendenz Daten auseinanderlaufen zu lassen, sie sind also potentiell gefährlich. Ich habe bspw. mit den Replikationen für MS SQL Server, die wie vermutlich die MySQL-Repl. auch, über Dienste bzw. Daemons implementiert ist, recht interessante Erfahrungen gemacht.
Habe ich das richtig verstanden, Du hast eine Replikation, die den Datenbestand auf zwei Servern zeitversetzt (möglichst) gleich halten soll und die die Konfliktverwaltung unterstützt?
Ja, ich denke, ich habe es:
Im Prinzip ist das gefährlich wenn der Zeitunterschied groß ist (also die beiden zig Sachen getrennt erledigt haben) und dies Befehle waren, die u.U. konträr sind. Also, wenn ich auf dem einen etwas lösche und auf dem anderen einfüge, muß ich wohl sicherstellen, daß diese Daten nicht aneinanderknallen.
An sich wäre ich sicher mit Innodb sicher (oder???), bei Myisam dürfte das unmöglich sein, wenn ich nicht selbst darauf achte.
Aber nach längerer Überlegung ist mir das klar geworden, vergleichbar mit einem Backup (rsync): Wenn man dort zwei auf Server und Spiegelserver gleichzeitig ändert, knallt ein Abgleich auch, wenn man nicht festlegt, was Priorität hat.
Viele Grüße,
Reiner
Ja, ich denke, ich habe es:
Im Prinzip ist das gefährlich wenn der Zeitunterschied groß ist (also die beiden zig Sachen getrennt erledigt haben) und dies Befehle waren, die u.U. konträr sind. Also, wenn ich auf dem einen etwas lösche und auf dem anderen einfüge, muß ich wohl sicherstellen, daß diese Daten nicht aneinanderknallen.
Es ist also keine Transaktionsreplikation gegeben, was wiederum verteilte Transaktionen voraussetzen würde, gut. Oder schlecht natürlich auch, ich habe einen Blick auf die erste Seite des von Dir zitierten Artikels geworfen, folgender Teilsatz liess mich aufhorchen: "Your applications must be replication-aware,[...]"
Nach meinem Verständnis von Transaktionen sollte das eben nicht gefordert werden. Denn, wann sowas gefordert wird, was leistet dann eigentlich noch der Daemon, der den Transaktionsablauf betreut? Dann kann man ja selbst mit Transaktionen der Marke Eigenbau kommen.
Sei also bitte ein wenig vorsichtig mit dem feature Transaktion unter MySQL.
Nach meinem Verständnis von Transaktionen sollte das eben nicht gefordert werden. Denn, wann sowas gefordert wird, was leistet dann eigentlich noch der Daemon, der den Transaktionsablauf betreut? Dann kann man ja selbst mit Transaktionen der Marke Eigenbau kommen.
Sei also bitte ein wenig vorsichtig mit dem feature Transaktion unter MySQL.
Sorry, "Transaktion" hier jeweils durch "Replikation" ersetzen...