Flush Logs #10 : MySQL 5.6 second round !

La conférence Oracle Open World est désormais l’occasion pour Oracle de diffuser des infos sur les nouveautés à venir pour MySQL.
Et le moins que l’on puisse dire, c’est que ça bouge(ra) pas mal !

Il semblerait que la prochaine version 5.6 soit en bonne voie pour devenir GA prochainement, à vos marques…

C’est ainsi l’occasion de faire un petit récap des annonces les plus intéressantes concernant la version 5.6 (ça n’engage que moi et il n’y a pas d’ordre précis)  :

  • Optimisation de l’indexation et de la manière dont l’optimizer appréhende les index (Index Condition Pushdown)
  • Possibilité de tracer les “choix” réalisés par l’optimizer
  • Possibilité de faire des EXPLAIN de commandes DELETE, UPDATE et INSERT
  • Les vues “matérialisées” arrivent et ce sera valable pour les tables dérivées et les sous requêtes (et on pourra y mettre des index !)
  • La sauvegarde/restauration du cache InnoDB (buffer pool size) sera possible (déjà dispo avec Percona server)
  • Statistiques InnoDB persistantes !
  • Réplication multi threads (cool)
  • (Ajoutez les votres)

Sachez également que Oracle proposera prochainement (enfin !) de nouvelles certifications pour les DBA MySQL que nous sommes.

Si vous souhaitez aller plus loin, voici quelques liens utiles concernant les annonces faites hier à la OOW2011 :

N’hésitez pas à commenter concernant ces nouveautés et donner vos impressions et liens !

 

Flush Logs #7 : What’s up with MMM ?!

L’actualité MySQL et Oracle sélectionnée par MySQL+
Pour les news en temps réel, suivez-moi sur twitter

Vous pouvez également vous inscrire au flux RSS ou par email pour recevoir automatiquement une notification de publication des nouveaux articles

Un flush logs essentiellement consacré à MMM (multi-masters replication)

En effet, plusieurs acteurs importants de la mysqlsphère ont exprimé cette semaine leurs difficultés avec cet outil remettant même en cause une utilisation possible en production.

J’avais moi même exprimé il y a quelques temps mon sentiment sur cet outil : Pourquoi-mmm-ne-fait-pas-ce-que-jaimerais-quil-fasse/

Les réactions à ces articles sont diverses et variées mais ce soudain intérêt pour cet outil est à mon avis révélateur d’une tendance à vouloir aller plus loin avec MySQL aujourd’hui.
En effet, la réplication est très utilisée avec MySQL et les outils permettant de rendre transparent la promotion d’un slave en master sont rares et parfois peu fiables. Le fait est que chacun a finalement pris le pli de développer ses propres outils ou d’écrire des procédures de promotion manuelle.

Je dis que c’est révélateur d’un changement de comportement mais également de la façon dont on utilise désormais MySQL pour des projets de plus en plus critiques en production. Il est donc normal de se heurter aux mêmes difficultés que l’on a pu rencontrer avec les autres SGBD et de tenter de trouver des solutions plus ou moins pertinentes.

La seule chose qui reste un peu flou après la lecture de ces articles est de savoir quelles solutions pertinentes mettre en oeuvre pour faire du multi-masters ?
Finalement, j’ai tendance à penser que pour l’instant, la réplication MySQL n’est pas conçue pour ça, au moins jusqu’à la version 5.1 (Des améliorations significatives arrivent en 5.5 et 5.6 pour la réplication).

Il faut donc peut-être se poser la question différemment : Est-il raisonnable de faire du multi-masters avec la réplication MySQL aujourd’hui ?

Je n’ai pas de réponse définitive à cette question et vous laisse vous faire votre propre opinion à travers les différents articles publiés dernièrement sur le sujet :
( Lisez aussi les commentaires, ils sont également très intéressants )

Pour le reste de l’actualité MySQL, j’ai selectionné les news suivantes pour cette semaine (on reste un peu dans le monde de la réplication) :

C’est tout pour cette semaine. N’hésitez pas à partager vos expériences sur MMM !

Flush logs #3 : Semaine du 14/03/2011

L’actualité MySQL et Oracle sélectionnée par MySQL+
Pour les news en temps réel, suivez-moi sur twitter

Vous pouvez également vous inscrire au flux RSS ou par email pour recevoir automatiquement une notification de publication des nouveaux articles

Pas mal d’infos et de posts techniques cette semaine, passons à la revue du web :

- Sortie de la version 5.5.10 de MySQL, amélioration notable à mon sens, une meilleure visibilité pour l’erreur sort aborted : http://dev.mysql.com/doc/refman/5.5/en/news-5-5-10.html

- Un projet qui débute tout juste mais qui me parait très sympa, un manager pour xtrabackup, a suivre donc…

- présente un outil, finalisé celui-ci, permettant de transformer les update reçus sur un slave en select et de les jouer pour accélérer le traitement des ordres sur le slave (Version 1.1 dispo) : http://karlssonondatabases.blogspot.com/2011/03/want-to-accellerate-mysql-slave-here-is.html

- Un bench assez complet de la version 7 du cluster MySQL : http://www.clusterdb.com/mysql-cluster/mysql-cluster-database-7-performance-benchmark/

- Un petit howto simple et efficace pour débutant sur la mise en oeuvre de la réplication MySQL : http://www.ovaistariq.net/565/setting-up-master-slave-replication-with-mysql/

- Dans quels cas utiliser le partitionnement MySQL ? Un article parmi une série très bien faite sur le partitionnement

- Prenez rendez-vous le 29/03 pour ce web séminaire de Percona sur ce plugin à la mode : HandlerSocket

- Une astuce sur la copie des tables MyISAM : http://www.mysqldiary.com/if-you-copy-a-myisam-table-with-primary-key-don’t-forget-to-order-the-rows-first/

- Un bench de MySQL dans le cloud via Amazon RDS : http://www.mysqlperformanceblog.com/2011/03/15/mysql-on-amazon-rds-part-1-insert-performance/

- Les inscriptions pour le Oracle OpenWorld sont ouvertes : http://www.oracle.com/us/openworld/registration-173440.html

- Un très bon article sur Pythian blog concernant les tables temporaires MySQL, A rapprocher de celui-ci

C’est tout pour cette semaine, bonne lecture !

N’hésitez pas à proposer vos liens : cedric@mysqlplus.fr

Flush logs #2 : Semaine du 07/03/2011

L’actualité MySQL et Oracle sélectionnée par MySQL+
Pour les news en temps réel, suivez-moi sur twitter

Vous pouvez également vous inscrire au flux RSS ou par email pour recevoir automatiquement une notification de publication des nouveaux articles

Je tiens tout d’abord à remercier les lecteurs de MySQL+, semble t-il déjà fidèles, avec un peu moins de 300 visites depuis le lancement du blog le 27/02/2011, c’est un grand succès pour moi et j’espère également pour vous qui me suivez déjà !
Reste à transformer l’essai et j’aimerai une participation plus active dans les commentaires, car c’est ainsi que les choses avancent. A vous de jouer !

Sans plus attendre, voici le flush logs de la semaine :

- La version 5.1.56 de MySQL est disponible, correction de bug essentiellement : http://lists.mysql.com/announce/721

- Le MUG FR a présenté sa conférence sur l’optimisation MySQL avec Morgan Tocker de chez Percona. Je n’ai pas pu rester jusqu’au bout, malheureusement, mais ce fût très intéressant et dans une ambiance très sympa avec pas mal de monde au rendez-vous. On espère un compte rendu et les slides de cette conf pour bientôt sur le site du MUG.

- Giuseppe Maxia rebondit sur un post de Shlomi Noach concernant l’implémentation de quotas sur la volumétrie des tables avec MySQL

- Un guide pour mettre en oeuvre une réplication entre NDB Cluster et une base non NDB : http://dbperf.wordpress.com/2011/03/04/mysql-cluster-setup-and-replication-between-ndb-and-non-ndb-engines-2/

- Un post sur le couple à la mode SSD / Base de données : http://www.haidongji.com/2011/03/04/ssds-and-its-impact-on-database-servers/

- xtrabackup sauvegarde désormais systématiquement la base système mysql, bonne nouvelle et bonne initiative : http://www.mysqlperformanceblog.com/2011/03/06/percona-server-and-xtrabackup-weekly-news-march-5th/

- Un petit tips de Giuseppe Maxia sur le paramètre méconnu –defaults-group-suffix qui vous permettra de lancer le client MySQL dans un contexte particulier : http://datacharmer.blogspot.com/2011/03/hidden-options-file-trick.html

- Quelques slides pour bien comprendre la commande explain : http://www.slideshare.net/phpcodemonkey/mysql-explain-explained

- L’avenir de la base de bugs plublique MySQL en question ? bad news ! http://datacharmer.blogspot.com/2011/03/mysql-council-addresses-public-bug.html

- Un petit howto pour renommer vos bases MySQL, attention toutefois, la commande rename database n’est plus supportée depuis la 5.1.23 ! : http://www.rndblog.com/how-to-rename-a-database-in-mysql/

- Un comparatif pertinent entre RBR et SBR (réplication) : http://www.databasejournal.com/features/mysql/article.php/3922266/Comparing-MySQL-Statement-Based-and-Row-Based-Replication.htm

N’hésitez pas à me proposer vos liens : cedric@mysqlplus.fr
Pour réagir, c’est dans les commentaires !

Bon week-end. Cédric

Pourquoi MMM ne fait pas ce que j’aimerais qu’il fasse ?!

Dans le cadre d’une réplication avec plusieurs esclaves et un seul maitre, ce dernier devient vite le point faible de votre architecture.
C’est pourquoi, une solution comme MMM, qui permet de gérer plusieurs maitres en actif/passif peut paraître séduisante mais c’est sans compter sur ses limitations.

Je fais un petit rappel de l’outil pour ceux qui n’ont jamais plongé le nez dans ce type d’architecture.
MMM est un ensemble de scripts perl permettant de gérer et de contrôler la bascule d’un maitre à un autre dans le cadre d’une réplication de type multi-master.

Je ne vais pas entrer ici dans les détails de la mise en oeuvre de ces outils, vous trouverez toutes ces informations ici : http://mysql-mmm.org/start
(La documentation est somme toute assez sommaire et incomplète, des connaissances de la réplication MySQL sont nécessaires)

Ce que fait MMM dans une architecture multi-master

Dans une architecture classique, un seul maitre joue le rôle de point d’entrée pour les écritures :

Ici, si le maitre est défaillant, il est possible de promouvoir un esclave en maitre manuellement. Attention, toutefois, il est nécessaire d’avoir une configuration adaptée pour cela : http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-switch.html
Mais pendant ces opérations, toutes les écritures de vos applications sont en attentes.

Les outils MMM vous promettent une gestion simplifée pour basculer d’un maitre à un autre, voire même d’un maitre vers un esclave pour les écritures :

Pour cela, vous devez avoir configuré une architecture de type master-master, soit, une réplication circulaire entre deux serveurs. Les deux maitres ne sont pas utilisés simultanément, il y a un maitre actif et un maitre passif.
En cas de défaillance d’un des maitres, le maitre passif prend automatiquement le relais pour les écritures.
En cas de défaillance d’un des slaves, les flux de lecture sont redirigés vers les slaves restants.

Ce que MMM ne fait pas (et que j’aimerais qu’il fasse)

Le hic, avec MMM, est qu’il lui manque une fonctionnalité de taille qui, à mon sens, limite son utilisation.
En effet, c’est une très bonne solution lorsque votre architecture n’est composée que de deux maitres, sans esclave, en mode actif/passif. Le maitre actif supporte les écritures et le maitre passif les lectures.
Dans ce cas, vous pouvez basculer volontairement d’un maitre à l’autre sans aucun problème.
De même, en cas de défaillance du maitre actif, le maitre passif prend le relais pour les écritures et lectures.

Ca se complique lorsque l’architecture ressemble à celle présentée plus haut, deux maitres actif/passif et un ou plusieurs esclaves.
Dans la réplication MySQL, un esclave ne peut avoir qu’un seul maitre. Ici, le maitre de tous les esclaves est donc le maitre actif.
Dans ce cas,  lors de la bascule vers le maitre passif, les esclaves ne peuvent plus joindre leur maitre, les réplications s’arrêtent. Les esclaves ne servent donc plus à rien, les écritures et les lectures sont toutes redirigées vers le maitre passif qui a pris la main.

En effet, MMM ne dirigera pas les esclaves vers le nouveau maitre.
Pire encore, comme il s’agit d’une réplication circulaire, la présence du paramètre log_slave_update=1 sur les deux maitres, vous empêchera de promouvoir sereinement votre maitre passif en nouveau maitre pour vos esclaves.

Ma conclusion

Ces réflexions sont issues de tests que j’ai réalisé à partir de la configuration standard de MMM.
Je pense qu’il est possible de mettre en oeuvre une architecture plus complexe avec quelques bidouilles sur lesquelles je ne me suis pas penché.

Néanmoins, je ne peux vous recommander de partir avec un tel produit si votre architecture cible ressemble à celle évoquée plus haut (2 masters + n slaves).
En effet, vous risquez de dépenser beaucoup d’énergie pour adapter MMM à vos besoins alors qu’une procédure de promotion manuelle correctement rédigée et testée sera certainement la meilleure solution.

Pour une architecture ne comprenant que deux serveurs maitres, ces outils peuvent vous apporter satisfaction.
Juste une petite réserve quand à la documentation très légère  et aux mises à jour peu régulières.

Comme d’habitude, n’hésitez pas à me faire un retour si vous utilisez cet outil ou si vous avez des questions.
Cédric.