Maison >base de données >tutoriel mysql >Une brève introduction au cluster mysql (photo)
1. Qu'est-ce queMySQLCluster
MySQL Cluster est un système de stockage à architecture de nœuds distribués sans partage, conçu pour fournir tolérance aux pannes et hautes performances.
La mise à jour des données utilise un niveau d'isolement en lecture validée pour garantir la cohérence des données sur tous les nœuds et utilise un mécanisme de validation en deux phases pour garantir que tous les nœuds ont les mêmes données (le cas échéant. Si l'opération d'écriture échoue, le la mise à jour échoue).
Les nœuds homologues sans partage rendent les mises à jour sur un serveur immédiatement visibles sur les autres serveurs. La propagation des mises à jour utilise un mécanisme de communication complexe conçu pour fournir un débit élevé sur le réseau.
Répartissez la charge sur plusieurs serveurs MySQL pour maximiser les performances du programme et garantir une haute disponibilité et une redondance en stockant les données dans différents emplacements.
2. Schéma d'architecture
3. Comment stocker les données
1. La synchronisation maître-esclave dans le groupe de nœuds de données Mysqlcluster utilise la réplication synchrone pour garantir la cohérence des données des nœuds dans le groupe. Généralement mis en œuvre via un protocole de validation en deux phases, le processus de travail général est le suivant :
a) Lorsque le maître exécute l'instruction de validation, la transaction est envoyée à l'esclave, et le l'esclave commence à se préparer à la soumission de la transaction.
b) Chaque esclave doit préparer une transaction, puis envoyer un message OK (ou ABORT) au maître, indiquant que la transaction est prête (ou que la transaction ne peut pas être préparée).
c) Le maître attend que tous les esclaves envoient des messages OK ou ABORT
Si le maître reçoit des messages OK de tous les esclaves, il enverra L'esclave envoie un message de validation pour dire à l'esclave de soumettre la transaction
Si le maître reçoit un message ABORT d'un esclave, il envoie un message ABORT à tous les esclaves pour dire à l'esclave d'abandonner. la transaction.
e) Chaque esclave attend un message OK ou ABORT du maître.
Si l'esclave reçoit la demande de validation, il validera la transaction et enverra une confirmation que la transaction a été soumise au maître
Si l'esclave reçoit Dès réception d'une demande d'annulation, il annulera toutes les modifications et libérera les ressources occupées, abandonnant ainsi la transaction, puis enverra une confirmation à Masterv que la transaction a été annulée.
f) Lorsque le maître reçoit la confirmation de tous les esclaves, il signalera que la transaction a été validée (ou abandonnée), puis passera à la transaction suivante.
Étant donné que la réplication synchrone nécessite un total de 4 transferts de messages, la vitesse de mise à jour des données du cluster mysql est plus lente que celle du mysql autonome. Par conséquent, le cluster MySQL doit fonctionner dans un réseau local Gigabit ou supérieur. Les nœuds peuvent utiliser des cartes réseau doubles et les groupes de nœuds doivent être directement connectés.
Question : L'expansion du cluster et l'ajout de groupes de nœuds de données entraîneront-ils une diminution de la vitesse de mise à jour des données ?
Réponse : Non, la vitesse de mise à jour des données sera plus rapide. Étant donné que les données sont traitées séparément, les données stockées dans chaque groupe de nœuds sont différentes, peut également réduire le verrouillage.
2. Mysqlcluster stocke toutes les colonnes d'index dans la mémoire principale, et d'autres colonnes non-index peuvent être stockées en mémoire ou stockées sur le disque en créant un espace table. Si les données changent (insertion, mise à jour, suppression, etc.), le cluster MySQL écrit les enregistrements modifiés dans le journal redo, puis écrit régulièrement les données sur le disque via des points de contrôle. Étant donné que les journaux redo sont validés de manière asynchrone, un petit nombre de transactions peuvent être perdues en cas d'échec. Afin de réduire les pertes de transactions, MySQL Cluster implémente des écritures différées (délai par défaut de deux secondes, configurable), afin que les écritures au point de contrôle puissent être terminées en cas d'échec sans perdre le dernier point de contrôle. Généralement, la défaillance d'un seul nœud de données n'entraînera aucune perte de données car la réplication synchrone des données est utilisée au sein du cluster.
4. MySQLExtension horizontale du cluster
1. Ajouter un groupe de nœuds de données pour développer écrire Opération pour améliorer la capacité de stockage du cluster. Prise en charge de l'expansion en ligne. Ajoutez d'abord de nouveaux nœuds au clsuter. Après le démarrage, utilisez la commande
ALTER ONLINE TABLE table_name REORGANIZE PARTITION
pour migrer les données et répartir les données uniformément entre les nœuds de données.
2. L'ajout d'un esclave ne fait qu'étendre la lecture, mais ne peut pas réaliser une expansion horizontale des opérations d'écriture.
La charge moyenne de l'ensemble du système peut être décrite comme :
AverageLoad=∑readload+ ∑writeload / ∑capacity
Supposons que chaque serveur a 10 000 transactions par seconde et que la charge d'écriture du maître par seconde est de 4 000 transactions par seconde. La charge de lecture est de 6 000, et le résultat est :
AverageLoad=6000+4000/10000=100%
Maintenant, ajoutez 3 esclaves et le volume de transactions par seconde passe à 40 000. Étant donné que les opérations d'écriture sont également répliquées, chaque opération d'écriture est exécutée 4 fois, la charge d'écriture de chaque esclave est donc de 4 000 transactions par seconde. La charge moyenne actuelle est alors :
AverageLoad=6000+4*4000/ 4*10000=55%
5. 🎜>Avantages et inconvénients des clustersAvantages : a) 99,999% de haute disponibilité
b) Basculement automatique rapide
c) Architecture distribuée flexible, pas de point de défaillance unique
d) Élevé débit et faible latence
e) Forte évolutivité, prend en charge l'expansion en ligne
Inconvénients :
a) Il existe de nombreuses limitations, telles que : les clés étrangères ne sont pas prises en charge
b) Le déploiement, la gestion et la configuration sont complexes
c ) Cela prend beaucoup d'espace disque et de mémoire
d) La sauvegarde et la récupération ne sont pas pratiques
e) Lors du redémarrage, le nœud de données Le chargement des données en mémoire prend beaucoup de temps
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!