MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Was ist neu in MySQL Galera Cluster 4.0

MySQL Galera Cluster 4.0 ist das neue Kind im Datenbankblock mit sehr interessanten neuen Funktionen. Derzeit ist es nur als Teil von MariaDB 10.4 verfügbar, wird aber in Zukunft auch mit MySQL 5.6, 5.7 und 8.0 funktionieren. In diesem Blogbeitrag möchten wir auf einige der neuen Funktionen eingehen, die mit Galera Cluster 4.0 einhergingen.

Galera-Cluster-Streaming-Replikation

Die wichtigste neue Funktion in dieser Version ist die Streaming-Replikation. Bisher funktionierte der Zertifizierungsprozess für das Galera-Cluster so, dass ganze Transaktionen nach Abschluss zertifiziert werden mussten.

Dieser Prozess war in mehreren Szenarien nicht ideal...

  1. Hotspots in Tabellen, Zeilen, die sehr häufig auf mehreren Knoten aktualisiert werden - Hunderte von schnellen Transaktionen, die auf mehreren Knoten ausgeführt werden, und die Änderung derselben Reihe von Zeilen führen zu häufigen Deadlocks und Rollbacks von Transaktionen
  2. Langfristige Transaktionen - Wenn eine Transaktion eine beträchtliche Zeit zum Abschließen benötigt, erhöht dies ernsthaft die Wahrscheinlichkeit, dass eine andere Transaktion in der Zwischenzeit auf einem anderen Knoten einige der Zeilen ändern kann, die ebenfalls durch die lange Transaktion aktualisiert wurden. Dies führte zu einem Deadlock während der Zertifizierung und eine der Transaktionen musste rückgängig gemacht werden.
  3. Große Transaktionen - Wenn eine Transaktion eine beträchtliche Anzahl von Zeilen ändert, ist es wahrscheinlich, dass eine andere Transaktion zur gleichen Zeit auf einem anderen Knoten eine der bereits durch die große Transaktion geänderten Zeilen ändert. Dies führt zu einem Deadlock während der Zertifizierung und eine der Transaktionen muss rückgängig gemacht werden. Darüber hinaus benötigen große Transaktionen zusätzliche Zeit, um verarbeitet, an alle Knoten im Cluster gesendet und zertifiziert zu werden. Dies ist keine ideale Situation, da es die Übertragung verzögert und den gesamten Cluster verlangsamt.

Glücklicherweise kann die Streaming-Replikation diese Probleme lösen. Der Hauptunterschied besteht darin, dass die Zertifizierung in Blöcken erfolgt, bei denen nicht auf den Abschluss der gesamten Transaktion gewartet werden muss. Selbst wenn eine Transaktion groß oder lang ist, wird die Mehrheit (oder alle, je nach den Einstellungen, die wir gleich besprechen werden) der Zeilen auf allen Knoten gesperrt, wodurch andere Abfragen daran gehindert werden, sie zu ändern.

Optionen für die Streaming-Replikation des MySQL Galera-Clusters

Es gibt zwei Konfigurationsoptionen für die Streaming-Replikation: 

wsrep_trx_fragment_size 

Dies gibt an, wie groß ein Fragment sein soll (standardmäßig ist es auf 0 gesetzt, was bedeutet, dass die Streaming-Replikation deaktiviert ist)

wsrep_trx_fragment_unit 

Dies sagt aus, was das Fragment wirklich ist. Standardmäßig sind es Bytes, aber es können auch „Anweisungen“ oder „Zeilen“ sein.

Diese Variablen können (und sollten) auf Sitzungsebene festgelegt werden, sodass der Benutzer entscheiden kann, welche bestimmte Abfrage mithilfe der Streaming-Replikation repliziert werden soll. Wenn Sie die Einheit auf „Anweisungen“ und die Größe auf 1 setzen, können Sie beispielsweise die Streaming-Replikation nur für eine einzelne Abfrage verwenden, die beispielsweise einen Hotspot aktualisiert.

Sie können Galera 4.0 so konfigurieren, dass jede Zeile, die Sie geändert haben, zertifiziert wird und dabei die Sperren aller Knoten ergriffen werden. Dadurch eignet sich die Streaming-Replikation hervorragend zur Lösung von Problemen mit häufigen Deadlocks, die vor Galera 4.0 nur gelöst werden konnten, indem alle Schreibvorgänge auf einen einzigen Knoten umgeleitet wurden.

WSREP-Tabellen

Galera 4.0 führt mehrere Tabellen ein, die dabei helfen, den Zustand des Clusters zu überwachen:

  • wsrep_cluster
  • wsrep_cluster_members
  • wsrep_streaming_log

Sie alle befinden sich im „mysql“-Schema. wsrep_cluster gibt Einblick in den Zustand des Clusters. wsrep_cluster_members gibt Ihnen Informationen über die Knoten, die Teil des Clusters sind. wsrep_streaming_log hilft dabei, den Status der Streaming-Replikation zu verfolgen.

Kommende Funktionen des Galera-Clusters

Codership, das Unternehmen hinter Galera, ist noch nicht fertig. Wir konnten eine Vorschau auf die Roadmap von CEO Seppo Jaakola erhalten, die Anfang dieses Jahres auf der Percona Live vorgestellt wurde. Anscheinend werden wir Funktionen wie XA-Transaktionsunterstützung und gcache-Verschlüsselung sehen. Das sind wirklich gute Neuigkeiten.

Unterstützung für XA-Transaktionen wird dank der Streaming-Replikation möglich sein. Kurz gesagt sind XA-Transaktionen die verteilten Transaktionen, die über mehrere Knoten laufen können. Sie verwenden zweiphasiges Commit, bei dem zuerst alle erforderlichen Sperren erworben werden müssen, um die Transaktion auf allen Knoten auszuführen, und dann, sobald dies abgeschlossen ist, die Änderungen festgeschrieben werden. In früheren Versionen hatte Galera keine Möglichkeit, Ressourcen auf Remote-Knoten zu sperren, mit der Streaming-Replikation hat sich dies geändert.

Gcache ist eine Datei, die Writesets speichert. Sein Inhalt wird an Joiner-Knoten gesendet, die eine Datenübertragung anfordern. Wenn alle Daten im gcache gespeichert sind, erhält Joiner nur die fehlenden Transaktionen in dem Prozess namens Incremental State Transfer (IST). Wenn gcache nicht alle erforderlichen Daten enthält, ist State Snapshot Transfer (SST) erforderlich und der gesamte Datensatz muss an den beitretenden Knoten übertragen werden.

Gcache enthält Informationen über kürzlich vorgenommene Änderungen, daher ist es großartig, seinen Inhalt für eine bessere Sicherheit verschlüsselt zu sehen. Da durch immer mehr Vorschriften immer bessere Sicherheitsstandards eingeführt werden, ist es entscheidend, dass die Software bei der Einhaltung von Vorschriften besser wird.

Fazit

Wir sind auf jeden Fall gespannt, wie Galera Cluster 4.0 auf Datenbanken als MariaDB funktionieren wird. Die Möglichkeit, MySQL 5.7 oder 8.0 mit Galera Cluster bereitzustellen, wird wirklich großartig sein. Schließlich ist Galera eine der am besten getesteten synchronen Replikationslösungen, die auf dem Markt erhältlich sind.