Affichage des articles dont le libellé est cluster. Afficher tous les articles
Affichage des articles dont le libellé est cluster. Afficher tous les articles

lundi 3 mai 2010

MySQL Cluster impose des limites aux méta-données

Lorsque vous mettez en place une configuration MySQL Cluster, ayez à l'esprit que celui-ci impose par défaut des limites aux méta-données. Vous ne pourrez donc pas créer autant de tables, d'index, de colonnes que vous le désirez sans modifier sa configuration. Il est possible de le faire plus tard, mais cela nécessitera d'effectuer un rolling restart (un redémarrage de l'ensemble des composants du cluster).
Voici les quelques paramètres qu'il faudra modifier selon les besoins de votre cluster (les valeurs par défaut sont indiquées entre parenthèses) :

- MaxNoOfAttributes fixe le nombre maximum de colonnes pouvant être créées au total dans l'ensemble des tables stockées (1000)
- MaxNoOfOrderedIndexes fixe le nombre maximum d'index ordonnés (128)
- MaxNoOfUniqueHashIndexes, comme le précédent mais pour les index uniques (64)
- MaxNoOfTables fixe le nombre maximum de tables (128)

Vous pourrez donc modifier la section [NDBD DEFAULT] de votre fichier de configuration ndb_mgmd.cnf et y ajouter la configuration suivante par exemple :

MaxNoOfAttributes=10000
MaxNoOfOrderedIndexes=3000
MaxNoOfUniqueHashIndexes=1500
MaxNoOfTables=1000

Pour plus d'information, vous pouvez visiter la documentation en ligne à l'adresse http://dev.mysql.com/doc/mysql-cluster-excerpt/5.1/en/mysql-cluster-mgm-definition.html

Vous ne pourrez pas dire que vous n'avez pas été prévenu :)

jeudi 18 février 2010

MySQL Cluster 7.1

La version 7.1 du moteur de stockage NDB n'est pas encore sortie mais on peut déjà savoir quelles seront les prochaines nouveautés non garanties pour le moment :

- Deux nouveaux connecteurs JAVA

ClusterJ et ClusterJPA permettent d'accéder au cluster MySQL sans utiliser de serveur MySQL (ni JDBC) ou pour le second de passer ou non par un serveur MySQL si la requête exécutée peut être améliorée par l'optimiseur MySQL.

Cette base permet d'accéder à des informations tel que la mémoire utilisée (table memoryusage), le statut des noeuds (table nodes), etc... nécessitant auparavant l'utilisation des commandes ALL DUMP {CODE}

- Une nouvelle base de données nommé ndbinfo

Cette base permet d'accéder à des informations tel que la mémoire utilisée (table memoryusage), le statut des noeuds (table nodes), etc... nécessitant auparavant l'utilisation des commandes ALL DUMP {CODE}

- Le support natif des valeurs par défaut des colonnes

Les valeurs par défaut des colonnes sont à présent stockées dans le noyau NDB et non par le serveur MySQL. Ceci permet au serveur MySQL de ne plus avoir à transférer ces données aux noeuds et donc potentiellement d'accélérer les requêtes d'insertions

- Une nouvelle option (--nowait-nodes) pour les managers

Cette option permet de ne plus avoir besoin de démarrer plus d'un manager pour démarrer un cluster configuré avec plusieurs managers.

Pour suivre l'évolution de ces fonctionnalités n'hésitez pas à consulter la page dédiée.

Récupérez les dernières versions de MySQL Cluster 7.X

Nous avons déjà vu dans un billet précédent les nouveautés de la version 7.0 (ancienne 6.4 renommée).

Il est cependant important de pouvoir vérifier l'arrivée des nouvelles versions sur le dépot officiel, et pourquoi pas de les récupérer pour les tester. Pour cela voici les commandes que j'utilise :

- Pour vérifier l'arrivée de nouvelles versions, je m'appuie sur les dates de création des répertoires

export LANG=C
wget -O - -q ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/|grep Directory|awk -FDirectory '!/old/ {print $1}'|perl -MDate::Manip -lne 'if(Date_Cmp(ParseDate($_),ParseDate("2010 Feb 15 21:27"))>0){print "Nouvelle version disponible !";exit}'

- Pour récupérer les nouvelles versions disponibles j'utilise l'alias mirror_mysql_cge que j'ai défini ainsi :

alias mirror_mysql_cge='(cd /var/www && wget -nH --cut-dirs 3 -rc -R "mysqlcom*" -A "*-7.*.gz" --exclude-directories=/pub/mysql/download/cluster_telco/old,/pub/mysql/download/cluster_telco/newbuilds,/pub/mysql/download/cluster_telco/*-6.*,/pub/mysql/download/cluster_telco/*/*-6.*,/pub/mysql/download/cluster_telco/evaluation* ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/)'

A chaque récupération de nouvelles archives il est cependant obligatoire de modifier la date utilisée dans la commande wget pour repérer la dernière archive récupérée. Pour obtenir cette date, la commande suivante sera d'un grand secours :

export LANG=C
wget -O - -q ftp://ftp.mysql.com/pub/mysql/download/cluster_telco/|grep Directory|awk -FDirectory '!/old/ {if(index($1,":")){print $1}}'| tr '\n' , |sed 's/,$//'|perl -MDate::Manip -MMemoize -lne 'sub sortDate {(Date_Cmp(ParseDate($a),ParseDate($b)))} print [reverse sort sortDate split(",",$_)]->[0]'

Ainsi je retrouverai toutes les versions 7.X sous l'arborescence /var/www/cluster_telco

mardi 30 décembre 2008

MySQL Cluster 6.4

La version 6.4 du moteur de stockage NDB utilisé par MySQL Cluster pointe son nez et nous offre les nouvelles fonctionnalités suivantes :

- Possibilité d'ajouter des noeuds et des groupes de noeuds online, c'est à dire sans recréer totalement le cluster et donc d'avoir un arrêt de service non négligeable
- Support du multithreading au niveau des datanodes
- Base NDB$INFO permettant d'avoir accès aux informations du cluster
- Disponibilité sous Windows

Pour les fonctionnalités apportées par chaque version 6.x vous pouvez vous rendre sur la roadmap du développement de MySQL Cluster. Les versions 6.x étaient disponibles en GPL ou en version commercial dans l'édition Carrier Grade de MySQL Cluster qui maintenant est obsolète et devient tout simplement MySQL Cluster. Toutes les sources (GPL/mysql et Commerciales/mysql-com) sont disponibles ici.

Concernant les performances, le blog de Jonas Oreland, Leader de l'équipe d'ingénieur MySQL (Cluster) depuis Août 2003, annonce des résultats très probants, avec par exemple 950 000 lectures/seconde sur un seul datanode grâce au multithreading du processus ndbd, dont le nouveau binaire est ndbmt, et jusqu'à 600 000 écritures/seconde. Et selon Mikael Ronstrom, Architecte logiciel sénior chez MySQL AB (SUN), on peut donc imaginer atteindre des dizaines de millions de lectures/seconde en multipliant le nombre de noeuds de données.

Ce sont donc de très bonnes nouvelles pour les heureux utilisateurs de MySQL Cluster et d'après Jonas on peut s'attendre à avoir une beta-release pour l'année 2009. Il faudra donc encore être patient mais on devrait pouvoir en profiter bientôt.

Enfin, pour ceux qui utilisent le moteur 6.3 je vous conseille de passer au moins à la version 6.3.19, si vous en avez la possibilité, car elle apporte une modification dans la création des redos en ne flushant sur disque qu'après la création du fichier et non plus tous les 32k blocs, ce qui ralentissait énormément le temps d'initialisation d'un noeud. Ainsi le blog de Shinguz a pu diviser le temps d'initialisation d'un noeud par 8.
Blogged with the Flock Browser