Quelle est la différence entre MySQL Fabric et MySQL Cluster

9

Je suis nouveau dans le monde MySQL et j'étais confus par les deux. Ne fournissent-ils pas tous deux une haute disponibilité et un partage?

En outre, comment WebScaleSQL se compare-t-il?

Mark13426
la source

Réponses:

20

Ces 3 choses n'ont rien à faire l'une avec l'autre. Je vais vous donner une introduction et vous pouvez rechercher ou demander plus de détails séparément:

MySQL Cluster est le nom marketing de ce que beaucoup d'entre nous appellent - pour éviter les confusions comme celle dont vous souffrez actuellement - "NDB Cluster" ou "MySQL NDB Cluster". Il s'agit d'un magasin de valeurs-clés synchrone, principalement réservé à la mémoire, qui permet une architecture sans partage pour MySQL (fournissant un backend au moteur NDB). Il fournit un partage automatique (donc, un meilleur débit de lecture et d'écriture) et une haute disponibilité. Il fonctionne bien pour les systèmes de petites données à valeur clé et à haut débit, mais il est relativement complexe à configurer (conduisant à des problèmes s'il n'est pas configuré correctement ou s'il est utilisé de manière involontaire) et ce n'est pas la meilleure latence. sage (vitesse brute). Il s'agit d'une version simplifiée (elle peut être utilisée pour autre chose que la mémoire seule et la valeur-clé, mais elle a été conçue autour d'elle). À mon avis, une très bonne pièce d'ingénierie, mais elle a des cas d'utilisation limités, car il s'agit d'un produit différent du serveur MySQL standard avec des téléchargements séparés (et nécessite l'utilisation d'un moteur spécifique).

MySQL Fabric est un ensemble d'outils / middleware écrit en python qui permet la gestion d'un ensemble de serveurs MySQL réguliers dans un environnement GTID répliqué . Ce n'est pas un cluster en soi, mais il en facilite la gestion. Il a des liens vers (pour l'instant) des connecteurs Java et Python, donc il peut gérer automatiquement le partage et la haute disponibilité des serveurs, mais c'est une couche au-dessus des serveurs MySQL réguliers et une réplication régulière (des moteurs de stockage réguliers comme InnoDB peuvent être utilisés) . La réplication, jusqu'à présent, est asynchrone (ou semi-synchrone), de sorte qu'elle peut ne pas fournir à elle seule la meilleure cohérence et sécurité; cela pourrait changer dans les futures versions 5.7. Cependant, cette approche a moins de temps de latence et utilise la technologie de réplication plus familière de MySQL DBA. MySQL Fabric est un enfant relativement nouveau dans le quartier, donc pas encore très étendu, mais il semble que ce soit la réaction d'Oracle (avec la réplication synchrone annoncée) aux clusters concurrents de Galera.

Si vous avez eu besoin de partitionnement et de HA, vous pouvez utiliser l'un des 2 anciens produits, mais probablement pour des scénarios totalement différents.

WebScaleSQL n'est pas une solution HA, comme les précédentes, c'est juste le nom que plusieurs entreprises ont donné à un fork / version de MySQL où elles partagent les correctifs spécifiques dont elles ont besoin et peut-être qu'Oracle n'a pas appliqué. Pour autant que je sache, il a été créé par Facebook, Twitter, LinkedIn et Google, et ils rebasent leurs propres versions de MySQL au-dessus de cette base commune. Ils ne fournissent pas de support ou de versions binaires. Si vous êtes un utilisateur final, vous ne devriez probablement pas vous soucier de l'utiliser, mais vous devez garder un œil sur le projet pour voir ce qui en découlera ou la réponse des autres fournisseurs.

Si vous essayez d'apprendre / commencer avec MySQL HA / scaling, commencez par la réplication de base de MySQL (ce n'est peut-être pas le meilleur, mais c'est la chose la plus simple pour commencer), alors vous pouvez continuer à partir de là vers d'autres solutions: DRBD [ sic], réplication GTID, NDB, Galera, Tungsten.

jynus
la source
Pourquoi mettez-vous le "[sic]" après le nom DRBD? Je les ai examinés et ils semblent assez impressionnants d'un point de vue technologique.
Vérace
DRBD est une technologie de niveau bloc, ce qui signifie qu'elle ne sait rien de la base de données ni de ses tampons. Ne vous attendez pas à de grandes performances pour les systèmes OLTP; il ne peut pas être actif-actif (même pas comme en mode lecture seule), si MySQL plante, vous devez récupérer comme il avait planté localement, et cela ne vous protège pas de la corruption de la base de données. Ce n'est pas une pure technologie de "partage de rien" au niveau logique - il s'agit plutôt d'un RAID distribué donc il n'est pas 100% adapté à MySQL. C'est bien pour une faible charge d'écriture ou si vous devez distribuer plusieurs protocoles en même temps. Dans le cas contraire, la réplication semi-sync basée sur les lignes est supérieure.
jynus
@ Vérace ... C'est, en résumé, une objection de cas d'utilisation (clustering MySQL), je n'ai rien contre la technologie dans d'autres cas, où des protocoles de plus haut niveau peuvent ne pas être disponibles / cela pourrait être mieux adapté.
jynus
J'ai parfaitement compris - le point sur la mise en mémoire tampon est bien fait - DRBD, comme vous le dites, ne sait rien des composants internes de MySQL - c'est-à-dire que les choses commises mais pas encore écrites sur le disque seront perdues en cas de crash.
Vérace
2

MySQL Fabric est implémenté en tant que nœud / processus MySQL Fabric (qui exécute des fonctions de gestion) et connecteurs compatibles Fabric capables de router les requêtes et les transactions directement vers le serveur MySQL le plus approprié. Le nœud MySQL Fabric stocke les informations d'état et de routage dans son magasin d'état (qui est une base de données MySQL).

MySQL Cluster est une technologie qui permet le clustering de bases de données en mémoire dans un système de partage rien. L'architecture sans partage permet au système de fonctionner avec du matériel très peu coûteux et avec un minimum d'exigences spécifiques pour le matériel ou les logiciels.

Elayachi
la source