MySQL Cluster

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Architecture de haute disponibilité MySQL (moteur NDB)
Nom complet MySQL NDB Cluster (Network DataBase)
Nœuds Gestion (ndb_mgmd) · Données (ndbd/ndbmtd) · SQL (mysqld)
Réplication Synchrone, entre nœuds de données
Voir aussi Mysql · Mariadb

MySQL Cluster (ou NDB Cluster, du nom de son moteur de stockage NDBNetwork DataBase) est une architecture de haute disponibilité pour MySQL fournie par Oracle/MySQL, distincte des mécanismes de réplication et de cluster proposés par d'autres SGBD ou forks de MySQL. Cette page sert de point d'entrée vers la série de pages documentant une installation concrète de MySQL Cluster ; pour l'administration MySQL générale, voir Mysql.

Architecture

Un cluster NDB repose sur trois types de nœuds, qui peuvent être répartis sur des machines dédiées ou combinés sur les mêmes serveurs physiques (cas le plus courant sur les petites installations, voir Serveur MYSQL CLUSTER cluster) :

  • Nœud de gestion (ndb_mgmd) — orchestre le cluster : démarrage, arrêt,
 configuration, point d'observation de l'état (ndb_mgm -e show). Il ne stocke pas
 de données applicatives ; sa perte n'interrompt pas le service tant que les autres nœuds
 tournent, mais elle prive le cluster de son point d'administration/arbitrage le temps de sa
 remise en route — d'où l'intérêt d'en déployer plusieurs. Sa topologie est décrite dans
 config.ini.
  • Nœuds de données (ndbd mono-thread ou ndbmtd multi-thread) —
 stockent les données en mémoire (avec persistance sur disque via checkpoints et journaux
 de rejeu), et se répliquent de façon synchrone entre eux selon le nombre de réplicas
 configuré (NoOfReplicas). C'est cette réplication synchrone entre nœuds de
 données qui distingue fondamentalement NDB Cluster d'une réplication MySQL classique.
  • Nœuds SQL (mysqld) — exposent les données stockées par les nœuds NDB via le
 protocole MySQL standard ; un client applicatif s'y connecte exactement comme à un serveur
 MySQL classique, sans avoir conscience du cluster sous-jacent. Configurés via
 my.cnf.

Face à la réplication MySQL classique (Master/Slave)

La réplication MySQL traditionnelle (binlog, un maître vers un ou plusieurs esclaves) est asynchrone (ou semi-synchrone selon la configuration (à vérifier selon la version)) : un esclave peut accuser un retard variable par rapport au maître, et une bascule en cas de panne du maître n'est pas automatique par défaut — elle nécessite une orchestration externe (promotion manuelle ou via un outil tiers).

MySQL Cluster, à l'inverse, réplique de façon synchrone entre les nœuds de données : une écriture n'est validée qu'une fois propagée aux réplicas configurés, ce qui élimine le risque de perte de données en cas de panne d'un nœud et permet une bascule transparente côté application (les nœuds SQL redirigent automatiquement les requêtes vers les nœuds de données disponibles). La contrepartie est un coût en latence d'écriture plus élevé et une architecture globalement plus complexe à dimensionner et opérer que la réplication classique.

Face à Galera Cluster

MariaDB ne propose pas le moteur NDB : son équivalent pour la haute disponibilité multi-nœuds est Galera Cluster, une solution de réplication synchrone multi-maître disponible aussi pour MySQL via des builds tiers. Galera réplique au niveau du moteur de stockage InnoDB/XtraDB existant (chaque nœud est un serveur MySQL/MariaDB complet avec sa propre copie totale des données), alors que NDB Cluster repose sur un moteur de stockage dédié (NDB) qui répartit et réplique les données entre nœuds de données spécialisés, distincts des nœuds SQL qui les exposent. Les deux visent une haute disponibilité avec bascule automatique, mais avec des architectures et des compromis de dimensionnement différents ; le choix entre les deux dépend notamment de l'écosystème déjà en place (MySQL/Oracle vs MariaDB) et du volume de données à répartir (comparatif détaillé hors périmètre de cette page).

Pages liées

Cette série documente une installation concrète de MySQL Cluster (nœuds combinés, architecture à 2 nœuds) :

Voir aussi

  • Mysql — administration MySQL générale
  • Mariadb — fork MySQL, sans moteur NDB, alternative Galera Cluster pour la haute disponibilité