MySQL Cluster
| 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 NDB — Network 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 (
ndbdmono-thread oundbmtdmulti-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) :
- Serveur MYSQL CLUSTER cluster — script de démarrage/arrêt/statut des trois démons d'un nœud combiné
- Serveur MYSQL CLUSTER config.ini — configuration de la topologie, lue par le nœud de gestion
- Serveur MYSQL CLUSTER my.cnf — configuration MySQL du nœud SQL, pour rejoindre le cluster
- Serveur MYSQL CLUSTER cluster backup — export des sauvegardes NDB vers un serveur NFS
- Serveur MYSQL CLUSTER cluster restore semiauto — récupération et restauration semi-automatique d'une sauvegarde
- Serveur MYSQL CLUSTER removecluster — désinstallation complète et destructive d'un nœud
- Serveur MYSQL CLUSTER reportmemory.sh — supervision (plugin Nagios/Centreon) du taux d'utilisation mémoire d'un nœud de données