Faire un don ! | | style | statistiques | contactez-nous | plan | lettre d'information

Liens connexes

Dépêche modérée par

Dépêche éditée par

: MySQL Proxy

Posté par Jean-Yves Beaujean (page perso, ). Modéré le 09 août 2007.
MySQL AB a publié il y a quelques semaines un nouvel outil fort intéressant et qui a été accueilli avec enthousiasme par la communauté des utilisateurs MySQL. Il s'agit de MySQL Proxy. Comme son nom l'indique ce programme se place entre le client et le serveur MySQL. La puissance de ce logiciel réside notamment dans sa flexibilité, fournie par le langage de script Lua.

Selon Wikipédia : Lua est un langage de script libre dont l'interpréteur est conçu dans un but de compacité (95 à 185 Ko pour la version 5.0.2, selon le compilateur utilisé et le système cible). Lua est conçu de manière à pouvoir être embarqué au sein d'une autre application, ce qui permet d'étendre celle-ci.

Avec MySQL Proxy, vous serez capable de :
  • Filtrer les requêtes avant de les transmettre au serveur ;
  • Réécrire certaines requêtes (en corrigant la syntaxe par exemple) ;
  • Intercepter le resultset afin d'y supprimer, modifier ou ajouter des enregistrements ;
  • Interdire le retour de certains résultats vers le client.
Mais également :
  • Rediriger les écritures sur le maître et les lectures sur l'esclave, dans le cas de réplication ;
  • Exécuter des commandes Shell.
MySQL Proxy est publié sous licence GPL et toujours en version alpha, mais n'a, sans aucun doute, pas encore fini de faire parler de lui.

> Lire la dépêche (15 commentaires, moyenne: 4,2).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Retour d'expérience en production

Posté par Greg () le 10/08/2007 à 06:03. (lien). Évalué à 10.

Bonjour,

effectivement ce produit est très interressant sur le principe, on évite par exemple de faire de la répartition de charge au niveau applicatif...

Je l'ai configuré et installé, tout semblait parfait, sous l'effet de l'excitation je l'ai meme mis en prod quelques heures.

Environnement: des serveurs PHP qui interroge un pool de 5 serveurs MySQL de manière aléatoire, statistiquement c'est équitable :)
J'ai donc changé le pool de 5 par 1 seul: MySQL Proxy, qui lui load balance les requetes sur les 5 serveurs (read-only)

Impressionnant, mysql proxy ne consomme rien en CPU avec 1500 req/sec , le serveur n'atteint meme pas 1 de charge, et ... ça marche !

Sauf que ... je ne sais pas pourquoi, mais les 5 serveurs se prennent moins de requetes, la partie du site concerné est plus lente à la navigation, on dirait que mysql proxy n'accepte qu'un nombre restreint de connections simultanés et/ou par secondes, le serveur étant pourtant légerement tuné pour largement encaisser plus de 100000 cnx / seconde.

J'ai posé la question sur le forum mysql proxy, et n'ai pas obtenu de réponse....
Et je n'ai pas le temps de creser, pour l'instant.

Dommage :-(

Il existe ausi DBIx::MyServer en Perl

Posté par R4f (page perso, ) le 10/08/2007 à 14:08. (lien). Évalué à 4.

Sympa, ce proxy.

Pour ceux que l'utilisation d'un nouveau langage (lua) rebute, vous pouvez également utiliser DBIx::MyServer, un module en Perl.

Un très bon article à ce sujet : http://dev.mysql.com/tech-resources/articles/dbixmyserver.ht(...)

Ce qu'on peut en faire ?

- implémenter un système de journal (log) maison en local ou à distance
- générer des tests à la demande
- implémenter des macros pour les expressions SQL les plus courantes
- lancer des commandes shell et du mail par votre serveur de bases de données
- utiliser d'autres SGBD au sein de MySQL
- ...

Et pourquoi pas mettre des requêtes... en memcache ?

Posté par Maxime Ritter (page perso, ) le 10/08/2007 à 15:42. (lien). Évalué à 2.

Ah, l'un de mes rêves les plus fous ; un proxy SQL !

C'est assez bizarre l'utilisation de LUA, mais mon rêve le plus fou pourrait bien se réaliser là : mettre les grosses requêtes SQL en memcache sans toucher au code PHP/Perl/ruby pour cacher mes requêtes !

En effet, on s'est déjà amusé à écrire une lib pour utiliser memcache trouvé là :
http://trac.lighttpd.net/trac/attachment/ticket/1139/Memcach(...) (la dépêche ne le dis pas, mais LUA est aussi pas mal utilisé dans lightty).

Il n'y a donc plus qu'à faire la suite, ça ne saurait être bien difficile pour qui a un peu de temps à perdre... Un volontaire pour tester ?

Revenir en haut de page