Was sind die Nachteile der Verwendung von Galera Cluster anstelle der Master / Slave-Replikation?


13

Was sind die Nachteile der Verwendung von Galera Cluster anstelle der regulären Master / Slave-Replikation? Die 0-Slave-Verzögerungszeit von Galera, die synchrone Replikation und kein Single-Point-of-Failure scheinen sehr ansprechend zu sein. Warum ist der Galera-Cluster dann nicht so verbreitet?

Antworten:


16

Denn wie bei jeder anderen Optimierung passt es nicht zu jeder Arbeitslast.

Galera kann von einer hohen Transaktionsrate überfordert sein oder wenn Transaktionen viele Zeilen aktualisieren. Außerdem kann es bei Ihren Anwendungen zu Verzögerungen bei COMMIT kommen, wenn der Cluster synchronisiert wird.

Galera aktualisiert auch andere Knoten nicht synchron. Es werden nur Worksets synchron übertragen. Auf diese Weise ähnelt es der Standardreplikation im semisynchronen Modus. Daher besteht immer noch eine geringe Wahrscheinlichkeit, veraltete Daten von einem anderen Clusterknoten zu lesen. Es gibt eine Option, mit der Sie SELECT zwingen können, zu warten, bis die Warteschlange der Worksets die Datenbank aktualisiert hat. Dies bedeutet jedoch, dass Sie bei SELECT Verzögerungen haben. Und es besteht sogar die Möglichkeit, dass SELECT blockiert wird, was nicht intuitiv zu sein scheint.

Galera ist brillant, aber keine einheitliche Technologie. Es gibt immer noch gute Gründe, die asynchrone Replikation zu verwenden.


Vielen Dank, Bill. Übrigens, ich habe Ihre Percona-Präsentationen eine Weile gelesen.
Sam

3
Ein weiterer Nachteil besteht darin, dass ein Donor-Knoten von sich selbst entfernt ist und zum Kopieren (über xtrabackup, rsync, mysqldump) auf einen beliebigen Knoten verwendet wird, der in den Cluster eingefügt wurde. Die verbleibenden Knoten im Cluster müssen dann das schwere Heben ausführen, bis der neue Knoten synchronisiert ist. Dies ist kein Nachteil für kleine oder mittelgroße DBs.
RolandoMySQLDBA

1
@RolandoMySQLDBA SST-Methoden wie xtrabackup verhindern genau, dass der Spender gesperrt wird. Obwohl es wahr ist, dass der Spender in jedem Fall eine verschlechterte Leistung aufweist, wenn die Datenbank groß ist.
Jynus

3
@jynus, das Problem sperrt nicht den Spenderknoten , sondern dass der empfangende Knoten offline ist und für keine Abfragen verfügbar ist, während das SST ausgeführt wird. Wenn Sie den Cluster für den Lastenausgleich von Abfragen verwenden, müssen die Abfragen, die an den empfangenden Knoten gegangen wären, an andere Knoten gesendet werden, bis der SST abgeschlossen ist.
Bill Karwin

2
Für den Fall, dass jemand anders nachschaut, ist die Option, auf die sich Bill bezieht, wsrep_causal_reads... auf ON gesetzt SET GLOBAL wsrep_causal_reads = 'ON';, um die Auswahl zu treffen und zu warten, bis alle Schreibsätze abgeschlossen sind.
Luke Cousins

2

Einige Nachteile von Galera sind:

  • Storage Engine-Unterstützung: beschränkt auf InnoDB / XtraDB (plus experimentelle Unterstützung für MyISAM)
  • Betriebssystemunterstützung: nur Linux / Unix-ähnliche Betriebssysteme

Es gibt auch einige Einschränkungen, die beachtet werden sollten, aber möglicherweise umgangen werden können:

  • Standardmäßig blockieren DDL-Vorgänge (Total Order Isolation) den gesamten Cluster, bis sie abgeschlossen sind
  • Jede Tabelle muss einen expliziten Primärschlüssel haben, entweder einspaltig oder mehrspaltig
  • Sperren: Einige explizite Sperren werden nicht unterstützt.

Weitere Informationen finden Sie unter Codership (und hier zum Blockieren von DDL), MariaDB und Percona .

BEARBEITEN: Beachten Sie auch, dass einige argumentieren, dass eng gekoppelte Datenbankcluster, wie z. B. Galera, wegen der Probleme, die sich aus der inhärenten Unzuverlässigkeit der Netzwerkschicht ergeben, keine geoverteilten Knoten haben sollten. Stattdessen müssen in diesen Fällen asynchrone Lösungen verwendet werden. Siehe: Vorgehensweise bei MySQL-Hochverfügbarkeit: Geografische Knotenverteilung mit Galera-basiertem Replikationsmissbrauch . Dennoch bloggen die Galera besagt , dass (2015):

Die Argumente für die Erstellung von geoverteilten Datenbankclustern sind eindeutig. Der Galera-Replikationsansatz und die spezifischen Funktionen des Produkts machen es praktisch, Galera-Cluster zu erstellen, die sich über mehrere Rechenzentren erstrecken, und mehrere Benutzer haben solche Cluster bereits in der Produktion.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.