Hallo,
Master-Master Replikation ist überhaupt nicht trivial, wie dedlfix bereits bemerkt hat. Es ist immer mit Datenkonflikten und einer spezifischen Implementierung zur Konfliktlösung verbunden.
Um die Atomizität von Records zu gewährleisten setzen manche DBMS auf so genannte UUIDs bzw. GUIDs. Das sind quasi immer eineindeutige Werte. Solch _eine_ UUID würde dann auf beiden/allen Mastern jedem Datensatz hinzugefügt werden. So bleibt der Datensatz innerhalb der gesamten Replikationswelt eindeutig.
Durch die UUID/GUID als globale Identifikation für den Datensatz hat die IDENTITY bzw. AUTO_INCREMENT Spalte der Tabelle eine noch geringere Bedeutung und einen sehr begrenzten Gültigkeitsbereich.
Ein weiteres Konzept, welches u.a. bei der Konfliktlösung verwendet wird oder um festzustellen ob synchronisiert werden muss, ist die Generationsverwaltung von Records/Datensätzen. Dabei kann man u.a. verwenden:
- ein Datumsfeld
... welches dann auf allen Mastern an den Datensatz angehängt wird und bei der Replikation auf allen Mastern gespeichert wird - oder eine simples numerisches (integer) Feld
... welches an den Datensatz angehangen wird und dann bei Änderungen am Datensatz inkrementiert wird und auf allen Mastern gespeichert wird
Fassen wir mal zusammen:
- Globale Identifikation
- Konflikthandling
- Generationsverwaltung
... sollte deine Master-Master Replikation beinhalten bzw. berücksichtigen.
Ciao, Frank