Jan Kneschke annonce avoir écrit un prototype de proxy MySQL. Le proxy s'installe entre le serveur MySQL et le client, puis fait passer les commandes et les résultats. Le principe...
Le lancement de MySQL Proxy a causé toute une commotion dans la communauté. Et avec raison. Pour les affamés de fonctionnalités, c'est certainement la meilleure des additions récentes aux outils MySQL.
Et si cette dernière affirmation vous laisse sur place, c'est parceque vous n'avez pas encore vu la valeur ajouté du proxy. Ne vous inquiétez pas. Cet article va vous donner un aperçu de la puissance du Proxy.
jan.kneschke s'est aperçu qu'une question revenait régulièrement sur le canal de proxy MySQL. Cette question concerne « Si l'authentification peut être intercepté et remplacé les données d'une source externe ».
Il va montrer que c'est tout à fait possible pour obtenir des données à partir d'une source externe (comme LDAP) ou veulent mettre en place les rôles. MySQL Proxy: Roles (0 visite)
Plusieurs en parlait, le proxy MySQL de Jan Kneschke est maintenant disponible.
Voici les fonctionnalités les plus importante.
* Totalement scriptable
* Gére l'équilibrage de charge
*...
Pourqoui dois-je configurer le temps de requête lente manuellement' Pourquoi est-ce que le serveur ne peut pas devenir lui-même le temps normal d'exécution d'une requête et me signaler les écarts, les requêtes particulièrement lentes'
A partir de cette constation, Jan Kneschke utilise la déviation standard pour identifier les requêtes trop lentes. Ca, en plus du MySQL Proxy et de l'histogramme de requêtes. MySQL Proxy: Adaptive Slow Query Log (0 visite) MySQL Proxy :Query Histogram (0 visite) MySQL Proxy (0 visite)
Jan Kneschke publie un tutoriel pour le proxy MySQL, destiné à séparer les requêtes SQL en fonction de leur impact : les écritures vont directement sur le maître, tandis que les lectures vont uniquement sur les esclaves. Cela permet de mettre en place une architecture de réplication sans modifier le code source de l'application amont (PHP ou autre) : le proxy MySQL se charge de faire la répartition entre les différents noeuds de l'architecture.
Dans le deuxième volet du tutoriel, Jan s'intéresse à des couples de requêtes classiques, comme les insertions avec colonne auto_increment, ainsi qu'à la mesure du lag de réplication.
Voici plusieurs semaines que Jan kneschke parle sur son blog d'utiliser MySQL avec la langage de script Lua.
Il nous montre les possibilités et la configuration qu'offre ce langage de script Présentation de Lua (0 visite) MySQL proxy : Lua classes (0 visite) MySQL proxy : yet another mysql shell (0 visite) MySQL proxy : a shell with auto-explain (0 visite)
Le proxy MySQL de Jan Kneschke est maintenant disponible : selon son auteur, il est totalement scriptable, et peut gérer l'équilibrage de charge, la reprise sur incident, l'analyse de requête, la réécriture de requête, etc. Cela devrait apporter des solutions simples pour passer d'un serveur à plusieurs, sans passer par des solutions propriétaires dispendieuses.
En utilisant un proxy MySQL, vous pouvez voir vos rêves devenir réalité :
implémenter un système de log personnalisé sur un serveur intermédiaire
générer automatiquement des tests à la demande
Implémenter des macros pour les expressions SQL les plus courantes
faire exécuter des commandes Shell au serveur et accéder au mail
utiliser les tables de n'importe quel autre serveur SQL
Pour faire tout cela, il suffit d'un proxy. Guiseppe Maxia vous présente DBIx::MyServer, un module Perl écrit par Philip Stoev, qui implémente le protocole MySQL en langage script.
Alex Tomic a testé le proxy MySQL en charge sur EC2 : un proxy et 4 serveurs MySQL. Les requêtes sont réparties sur 4 serveurs MySQL, et distribuées (entrée et sortie) via le proxy. Les résultats montrent que le point critique est entre 4 et 8 threads concurrents : en dessous de ce niveau d'activité, le surcoût de MySQL proxy rend l'architecture plus lente. Une fois ce cap passé, le gain devient plus intéressant, et l'archi proxy est capable de monter en puissance jusqu'à 4 fois la charge nominale de chaque serveur. mysql proxy 0.6.1 performance tests (0 visite) mysql proxy project (0 visite)
Lors de la mise en place d'une réplication, il faut modifier son application PHP pour diriger les lectures sur les esclaves et les écritures sur le maître. On y arrive souvent en passant par une couche intermédiaire qui fait la distribution. Avec MySQL Proxy, cette couche peut se faire de manière transparante pour l'application.
Un script LUA sur MySQL Proxy va distribuer correctement les transactions et écritures vers le maître, et les autres requêtes vers les esclaves. MySQL Proxy est aussi capable de surveiller tout un pool d'esclaves, et de répartir les requêtes sur les esclaves qui fonctionnent (par opposition à ceux qui sont inaccessibles).
Entre PHP et MySQL, le lien est simple. Une ressource de connexion et tout le trafic passe par la même ligne : les requêtes SQL comme les données. S'il y a un domaine qui s'active, c'est dans la gestion de ce trafic.
Déjà les architectures de réplications imposent que certaines requêtes soient dirigées sur les esclaves et les autres vers le maître.
Kaj Arno détaille une stratégie encore plus poussée, où on distingue les requêtes SELECT simples et les complexes : ces dernières sont les jointures, les regroupements ou les selections qui scannent toute la table. Dans cette approche, un cluster assure les écritures et les sélections rapides, et les selections complexes sont déportées via la réplication sur des esclaves. Combining MySQL Proxy with MySQL Cluster (0 visite)
Brian Aker a cessé de compter le nombre de proxy pour MySQL qu'il a repéré : il y a SQL Relay, qui remonte à quelques années, MySQL Proxy, de Jan Kneschke. En fait, il y en a encore 4 autres différents. Lequel est le meilleur, se demande Brian? Proxy, Proxy, on the Wall, who is the fairest of them all... (0 visite) MySQL Proxy site (0 visite) SQLrelay (0 visite) SpockProxy (0 visite)
Vous avez peut-être remarqué mon excitation à propos du proxy MySQL. Mais peut être avez-vous vous du mal à comprendre ce que vous pouvez en faire.
Voici un tutorial simple qui vous guidera dans vos premiers pas avec le proyx. Vous sera alors capable d'utiliser des macros depuis les clients MySQL.
mysql-proxy se dirige tranquillement vers sa première version stable, et les premiers ateliers de performance sont en train de sortir. mysqlproxy sert de point d'entrée pour une architecture MySQL : en lui donnant quelques règles, on peut répartir les demandes de requêtes sur plusieurs machines, en fonction de règle personnalisées.
Les résultats sont encourageants :
mysql-proxy a resisté à mysqslap (le client de tests en charge de MySQL)
mysql-proxy a répartit la charge entre les bases sans problème
Assurez-vous que tout fonctionne correctement dès le début avec un client MysQL.
DBA Dojo: MySQL-Proxy vs MySQLSlap Round 1 (0 visite) DBA Dojo: MySQL vs MySQLSlap (0 visite) mysqlproxy (0 visite) MySQL University - Introducing Lua for Proxy scripting (0 visite)