Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, N-Master => 1-Slave-Replikation mit MySQL durchzuführen?

Multi-Master-Replikation (ein Slave mit mehr als einem Master) wird von MySQL (außer MySQL Cluster) nicht unterstützt. Sie können eine Master-Master-Replikation einer kreisförmigen (Ring-)Replikation durchführen (beschrieben hier ). oder hier ).

In High performance MySQL 2nd edition Die Autoren beschreiben einen Weg zur Emulation der Multi-Master-Replikation mithilfe einer cleveren Kombination aus Master-Master-Replikation und dem Blackhole Storage Engine (Kapitel 8 Replikation> Replikationstopologien> Benutzerdefinierte Replikationslösungen> Multimaster-Replikation emulieren S. 373 - 375 ).

Sie zeigen zwei mögliche Topologien:

Verwendung von zwei Co-Mastern (Ermöglicht es, den Master des Slaves von Master 1 zu wechseln zu Meister 2 )

  • Meister 1: hostet DB1 und repliziert DB2 von Meister 2; die Speicher-Engine für alle Tabellen in DB2 wird in Blackhole geändert damit die Daten nicht effektiv auf Master 1 gespeichert werden .
  • Meister 2: hostet DB2 und repliziert DB1 von Master 1; die Speicher-Engine für alle Tabellen in DB1 wird in Blackhole geändert damit die Daten nicht effektiv auf Master 2 gespeichert werden
  • Sklave 1: repliziert DB1 und DB2 entweder von Master 1 oder Meister 2 (ermöglicht den Wechsel des Masters); das Ergebnis ist Slave 1 repliziert beide Datenbanken, die effektiv auf zwei verschiedenen Mastern gehostet werden.

Eine Master-Kette verwenden

  • Meister 1: hostet nur DB1
  • Meister 2: hostet DB2 und repliziert DB1 von Master 1; die Speicher-Engine für alle Tabellen in DB1 wird in Blackhole geändert damit die Daten nicht effektiv auf Master 2 gespeichert werden
  • Sklave 1: repliziert DB1 und DB2 von Meister 2; das Ergebnis ist Slave 1 repliziert beide Datenbanken, die effektiv auf zwei verschiedenen Mastern gehostet werden.

Bitte beachten Sie, dass Sie mit diesem Setup nur Aktualisierungen an DB1 senden können durch Meister 1 und Updates für DB2 zu Meister 2 . Das können Sie nicht Senden Sie Aktualisierungen an eine der Tabellen an beliebige Master.

Vielleicht ist es möglich, die beschriebene Lösung mit dem Hack für eine echte Master-Master-Replikation zu kombinieren (die Updates für beide Master zulässt), die eine Art Autoincrement-Mangling verwendet und beschrieben wird hier oder hier .