Multi-master replikering (en slav med mer än en master) stöds inte av MySQL (förutom MySQL Cluster). Du kan göra en master-master replikering av en cirkulär (ring) replikering (beskrivs här eller här ).
I Högpresterande MySQL 2:a upplagan
författarna beskriver ett sätt att emulera multi-master replikering med en smart kombination av master-master replikering och Blackhole
lagringsmotor (Kapitel 8 Replikering> Replikeringstopologier> Anpassade replikeringslösningar> Emulering av multimasterreplikering s. 373 - 375
).
De visar två möjliga topologier:
Använda två co-masters (som gör det möjligt att byta master för slaven från Master 1 till Master 2 )
- Mästare 1: värdar DB1 och replikerar DB2 från Master 2; lagringsmotorn för alla tabeller i DB2 ändras till
Blackhole
så att data inte lagras effektivt på Master 1 . - Master 2: värdar DB2 och replikerar DB1 från Master 1; lagringsmotorn för alla tabeller i DB1 ändras till
Blackhole
så att data inte lagras effektivt på Master 2 - Slav 1: replikerar DB1 och DB2 från antingen Master 1 eller Master 2 (tillåter att byta master); resultatet är att Slav 1 replikerar båda databaserna som effektivt finns på två olika masters.
Använda en huvudkedja
- Mästare 1: endast värd DB1
- Master 2: värdar DB2 och replikerar DB1 från Master 1; lagringsmotorn för alla tabeller i DB1 ändras till
Blackhole
så att data inte lagras effektivt på Master 2 - Slav 1: replikerar DB1 och DB2 från Master 2; resultatet är att Slav 1 replikerar båda databaserna som effektivt finns på två olika masters.
Observera att den här installationen endast tillåter dig att skicka uppdateringar till DB1 genom Master 1 och uppdateringar till DB2 till Master 2 . Du kan inte skicka uppdateringar till endera tabellen till godtyckliga masters.
Kanske är det möjligt att kombinera den beskrivna lösningen med hacket för en äkta master-master-replikering (som tillåter uppdateringar av båda masterna) som använder någon form av autoincrement-mangling och som beskrivs här eller här .