2011-01-09 14 views
2

Konzeptionell funktioniert die Master-Master-Replikation?Wie funktioniert die Master-Master-Replikation?

Ich nehme an, dass Kollisionen ein häufiges Vorkommnis sind, das irgendwie gelöst werden muss.

+0

in welchem ​​Kontext? – skaffman

+0

Datei, Datenbank, alles. Das ** Konzept ** des Master-Masters ist immer noch gleich, unabhängig vom Kontext. – frooyo

+0

@ user401839: Ja, das Konzept ist das gleiche, aber Sie haben gefragt, wie es funktioniert *, und das hängt vom Kontext ab. Das Konzept ist viel zu wollig, um Details ohne weitere Informationen zu geben. – skaffman

Antwort

2

Master-Master-Replikation (allgemeiner - Multi-Master-Replikation) konzeptionell unter der Annahme, dass Konflikte nicht üblich sind und nur das gesamte System lose konsistent zu halten, Kommunikation zwischen Mastern asynchron kommuniziert, die grundlegenden ACID Eigenschaften verletzt.

Da carmbrester korrekt vorgeschlagen wurde (und unabhängig von MySQL), ist die Schlüsselerzeugung eine wichtige Mitigationsstrategie gegen Konflikte (z. B. wird dieselbe ID generiert). Darüber hinaus denke ich, dass der Schlüssel darin besteht, Konflikte in Multi-Master-Systemen ähnlich wie Konflikte in optimistischen Sperrmodellen zu sehen. Beides gelingt, weil die verbleibenden Risiken im Vergleich zu den Auszahlungen in der Regel gering sind.

Allerdings können Konflikte auftreten (wie Sie vorschlagen) und verschiedene Anbieter bieten unterschiedliche Strategien. Zum Beispiel erlaubt Oracle DBAs, aus einer Reihe von Konfliktlösungsgrundlagen (Zeitstempel, Affinität, usw.) und Subsqueuent-Aktionen (Protokollieren eines Fehlers in einer Warteschlange, usw.) auszuwählen. Weitere Informationen zu Oracle unter http://www.orafaq.com/wiki/Advanced_Replication_FAQ#What_happens_if_two_or_more_sites_change_the_same_data.3F

0

Kontext ist wichtig, aber hier ist ein wenig Informationen darüber, wie MySql behandelt das Szenario ...

Die binlog von jedem Master gelesen und auf dem anderen Master ausgeführt. Auto-increment offset ist so konfiguriert, dass Primärschlüssel nicht kollidieren, dh einer der Master würde mit einem Offset konfiguriert werden, der dazu führt, dass gerade Zahlen während der automatischen Inkrementierung verwendet werden, während der andere Master so konfiguriert wäre, dass er ungerade Zahlen verwendet -Zuwachs.

Für MySql Clustering-Replikation, die auch mit Dual-Mastern konfiguriert werden kann, können Sie konfigurieren, wie Konflikte behandelt werden, wie in this link beschrieben.