Was ist der Unterschied zwischen MySQL Fabric und MySQL Cluster?

9

Ich bin neu in der MySQL-Welt und wurde von beiden verwirrt. Bieten beide nicht hohe Verfügbarkeit und Sharding?

Wie vergleicht sich WebScaleSQL?

Mark13426
quelle

Antworten:

20

Diese 3 Dinge haben nichts miteinander zu tun. Ich werde Ihnen eine Einführung geben und Sie können separat nach weiteren Einzelheiten suchen oder fragen:

MySQL Cluster ist der Marketingname dessen, was viele von uns als "NDB-Cluster" oder "MySQL-NDB-Cluster" bezeichnen, um Verwirrungen wie die, unter denen Sie derzeit leiden, zu vermeiden. Es handelt sich um einen synchronen, meist nur für den Speicher bestimmten Schlüsselwertspeicher, der eine Shared-Nothing-Architektur für MySQL ermöglicht (Bereitstellung eines Backends für die NDB-Engine). Es bietet automatisches Sharding (also besseren Lese- und Schreibdurchsatz) und hohe Verfügbarkeit. Es funktioniert gut für Small-Data-Systeme mit hohem Durchsatz und Schlüsselwerten, ist jedoch relativ komplex einzurichten (was zu Problemen führt, wenn es nicht richtig konfiguriert ist oder unbeabsichtigt verwendet wird) und es ist nicht die beste Latenzzeit. weise (rohe Geschwindigkeit). Dies ist eine vereinfachte Version (sie kann für mehr als nur Speicher und Schlüsselwert verwendet werden, wurde jedoch darauf ausgelegt). Meiner Meinung nach ein sehr gutes Stück Technik, aber es gibt nur begrenzte Anwendungsfälle, da es sich um ein anderes Produkt handelt als ein normaler MySQL-Server mit separaten Downloads (und die Verwendung einer bestimmten Engine erfordert).

MySQL Fabric ist eine Reihe von in Python geschriebenen Tools / Middleware, mit denen eine Reihe regulärer MySQL-Server in einer replizierten GTID-Umgebung verwaltet werden können . Es ist kein Cluster an sich, aber es erleichtert die Verwaltung von einem. Es verfügt über Links zu (vorerst) Java- und Python-Konnektoren, sodass das Sharding und die hohe Verfügbarkeit von Servern automatisch verarbeitet werden können. Es ist jedoch eine Schicht über regulären MySQL-Servern und der regulären Replikation (reguläre Speicher-Engines wie InnoDB können verwendet werden). . Die Replikation ist bisher asynchron (oder halbsynchron), sodass sie möglicherweise nicht die beste Konsistenz und Sicherheit bietet. Dies kann sich in zukünftigen 5.7-Versionen ändern. Dieser Ansatz hat jedoch einen geringeren Latenzaufwand und verwendet die bekanntere Replikationstechnologie von MySQL DBA. MySQL Fabric ist ein relativ neues Kind in der Nachbarschaft, also noch nicht sehr erweitert, aber es scheint die Reaktion von Oracle (zusammen mit der angekündigten synchronen Replikation) auf die Galera-basierten Cluster der Konkurrenz zu sein.

Wenn Sie Sharding und HA benötigen, können Sie eines der beiden früheren Produkte verwenden, wahrscheinlich jedoch für völlig andere Szenarien.

WebScaleSQL ist keine HA-Lösung, wie die vorherigen, sondern nur der Name, den mehrere Unternehmen einer Gabel / Version von MySQL gegeben haben, in der sie bestimmte Patches gemeinsam nutzen, die sie benötigen, und Oracle hat sie möglicherweise nicht angewendet. Soweit ich weiß, wurde es von Facebook, Twitter, LinkedIn und Google erstellt und sie stützen ihre eigenen MySQL-Versionen auf diese gemeinsame Basis. Sie bieten keine Unterstützung oder binäre Releases. Wenn Sie ein Endbenutzer sind, sollten Sie es wahrscheinlich nicht verwenden, aber Sie sollten das Projekt im Auge behalten, um zu sehen, was sich daraus entwickeln wird, oder die Reaktion anderer Anbieter.

Wenn Sie versuchen, mit MySQL HA / Skalierung zu lernen / zu beginnen, beginnen Sie mit der grundlegenden MySQL-Replikation (es ist vielleicht nicht die beste, aber es ist am einfachsten, damit zu beginnen), dann können Sie von dort aus zu anderen Lösungen übergehen: DRBD [ sic], GTID-Replikation, NDB, Galera, Wolfram.

Jynus
quelle
Warum setzen Sie das "[sic]" nach dem DRBD-Namen? Ich habe sie mir angesehen und sie scheinen aus technologischer Sicht ziemlich beeindruckend zu sein.
Vérace
DRBD ist eine Technologie auf Blockebene, dh es weiß nichts über die Datenbank oder ihre Puffer. Erwarten Sie keine großartige Leistung für OLTP-Systeme. Es kann nicht aktiv-aktiv sein (auch nicht im schreibgeschützten Modus). Wenn MySQL abstürzt, müssen Sie es wiederherstellen, da es lokal abgestürzt ist, und es schützt Sie nicht vor Datenbankbeschädigungen. Es handelt sich nicht um eine reine "Shared Nothing" -Technologie auf logischer Ebene. Es handelt sich eher um ein verteiltes RAID, sodass es nicht zu 100% für MySQL geeignet ist. Dies ist hilfreich bei geringer Schreiblast oder wenn Sie mehrere Protokolle gleichzeitig verteilen müssen. Die zeilenbasierte halbsynchrone Replikation ist ansonsten überlegen.
Jynus
@ Vérace ... Zusammenfassend ist es ein Anwendungsfall-Einwand (MySQL-Clustering), ich habe nichts gegen die Technologie in anderen Fällen, in denen Protokolle höherer Ebenen möglicherweise nicht verfügbar sind / es könnte besser passen.
Jynus
Ich habe es perfekt verstanden - der Punkt über das Puffern ist gut gemacht - DRBD weiß, wie Sie sagen, nichts über die Interna von MySQL - dh Dinge, die festgeschrieben, aber noch nicht auf die Festplatte geschrieben wurden, gehen im Falle eines Absturzes verloren.
Vérace
2

MySQL Fabric wird als MySQL Fabric-Knoten / -Prozess (der Verwaltungsfunktionen ausführt) und Fabric-fähige Konnektoren implementiert, die Abfragen und Transaktionen direkt an den am besten geeigneten MySQL-Server weiterleiten können. Der MySQL Fabric-Knoten speichert Status- und Routing-Informationen in seinem State Store (einer MySQL-Datenbank).

MySQL Cluster ist eine Technologie, die das Clustering von In-Memory-Datenbanken in einem Shared-Nothing-System ermöglicht. Die Shared-Nothing-Architektur ermöglicht es dem System, mit sehr kostengünstiger Hardware und mit einem Minimum an spezifischen Anforderungen an Hardware oder Software zu arbeiten.

Elayachi
quelle