14 26 JANVIER 2010 - N°1
14
26 JANVIER 2010 - N°1 26 JANVIER 2010 - N°1
Les rectangles NDBD représentent les nœuds de données.
La table est d’abord divisée en plusieurs partitions (P1, P2, P3, P4).
Dans l’exemple, le cluster est configuré pour qu’une donnée existe
à deux endroits différents (nombre de réplicas=2), on appelle
fragment primaire la partition qui est utilisée par les requêtes et
le fragment secondaire la partition qui est utilisée pour le backup.
De cette manière, tant qu’un nœud dans chaque node group est
vivant, le cluster continue de fonctionner car l’entièreté des don-
nées sont disponibles.
Par contre si tous les nœuds d’un node group tombent, le cluster
s’arrête de fonctionner.
Le mécanisme de réplication synchrone est utilisé de manière
à garantir la consistance des données entre les différents frag-
ments: lorsque l’on souhaite modifier une donnée, l’ordre est en-
voyé au serveur MySQL qui détermine quel est le nœud qui stocke
le fragment primaire correspondant à cette donnée et la modifie.
Il est ensuite envoyé aux autres nœuds du même node group afin
que le(s) fragment(s) secondaire(s) soi(en)t modifié(s). Attention
toutefois, plus la donnée est volumineuse et est dupliquée, plus
cela demande du temps pour l’écrire et la modifier !
Ce à quoi il faut faire attention
Sans rentrer dans les détails qui ne vous dirons (peut-être) rien,
voici quelques informations (toujours non exhaustives bien sûr) à
prendre en compte:
z Voici le matériel recommandé par MySQL pour les serveurs
utilisés comme nœuds de stockage dans le cluster:
w Système: Linux (Red Hat, SuSe), Solaris, AIX, HP-UX, Mac
OSX.
w CPU: 2 processeurs: Intel Xeon, Intel Itanium, AMD Opte-
ron, Sun SPARC, IBM PowerPC.
w Mémoire: 16 GB RAM.
w Disque: 4 disques 36GB SCSI (contrôleur RAID 1).
w Réseau: Ethernet gigabit.
z Il faut au minimum quatre nœuds (donc quatre machines)
avec une mémoire conséquente car les données et les index
sont maintenus en mémoire.
z Pour des raisons de performances, les quatre nœuds devraient
être dédiés au clustering.
z S’il y a beaucoup plus d’écritures que de lectures, les perfor-
mances risquent de chuter.
z Attention au nombre de jointure dans une même requête, plus
il y en a plus les performances vont diminuer.
z Administration différente d’un serveur MySQL classique et
plus complexe.
z Pour l’instant que sur Linux.
z Certains ordres SQL qui fonctionnent avec un MySQL clas-
sique produisent une erreur (création de tables temporaires,
limitations sur les index …).
Deux petits tableaux comparatifs, MyISAM et InnoDB étant des
moteurs de stockage de MySQL et NDB étant le (seul) moteur de
MySQL Cluster.
MyISAM versus NDB
Caractéristique MyISAM NDB
Supporte les transactions multi ins-
tructions et les rollback
&Non Oui
Supporte les index fulltext Oui Non
Peut utiliser les recherches hash Non Oui
Supporte l’Unicode à partir de la
version 4.1 5.0
Peut compresser le stockage en lec-
ture seule Oui Non
Supporte les clés étrangères Non Non
Supporte les transactions Non Oui
Verrou au niveau Table Enregistre-
ment
Utilise beaucoup de RAM et a beau-
coup de trafic réseau Non Oui
InnoDB versus NDB
Caractéristique InnoDB NDB
Supporte les contraintes des clés
étrangères Oui Non
Supporte les transactions Oui Oui
Verrou au niveau Enregistre-
ment
Enregistre-
ment
Supporte l’Unicode à partir de la
version 4.1.2 5.0
Utilise beaucoup de RAM et a beau-
coup de trafic réseau Non Oui
Au bout du compte
MySQL Cluster apporte tout ce qui a trait à la notion de disponi-
bilité (99,999%) et de performance mais la scalabilité est réduite
dans le sens où l’on peut rajouter à chaud uniquement des nœuds
d’administration et API/SQL. Il faut faire attention à la notion
d’équilibrage de charge car dans le cas de MySQL Cluster elle se
fait grâce à la répartition des données sur plusieurs nœuds (donc
chaque nœud s’occupe du traitement de ses données) mais pas
parce que la donnée existe à plusieurs endroits. En effet, seul le
fragment primaire est utilisé pour la lecture et l’écriture.
La version 7.0 de MySQL Cluster semble apporter sont lot de
nouveautés intéressantes, comme par exemple l’amélioration de
la scalabilité en donnant la possibilité d’ajouter/supprimer des
nœuds de données à chaud. Elle permet aussi de tirer avantage
du multithreading, ce qui n’était pas possible avant. Cela permet-
trait, selon MySQL, d’améliorer grandement les temps de réponse.
MySQL s’est aussi intéressé à la plate-forme Windows car la ver-
sion 7.0 peut dorénavant être installée sur du 2003 Server, XP ou
Vista mais pour le moment uniquement pour du développement.
Certaines limitations ont aussi été repoussées comme par exemple
le nombre de nœuds qu’un cluster pouvait gérer.
MySQL Cluster 5.1