Chez Bazarchic, nous utilisons depuis de nombreuses années, la solution master/slaves pour la gestion des bases de données MYSQL, que ce soit coté site, ou coté back-office. Historiquement, c’est l’application qui gère la répartition lecture/écriture des données sur les différentes machines de base de données. Cependant, cette répartition n’est pas optimum, le master récupérant au final beaucoup de SELECT. Certains doivent rester absolument sur le master (la réplication étant asynchrone) , d’autres par contre, du fait de données non critiques peuvent très bien s’exécuter sur des slaves.
Nous regardons donc depuis pas mal de temps, les répartiteurs de charge pour MYSQL pour soulager l’application de cette tâche.
Nous avons utilisé Nginx recompilé en TCP, uniquement pour faire du failover, mais pas de répartition de charge à proprement parler. De même, Maxscale ne nous a pas donné entière satisfaction, sa mise en oeuvre a été compliquée de notre coté.
Nous avons découvert ProxySQL, qui lui correspond bien à cette problématique de répartition des lectures/écritures sur un pool de master/slaves. La simplicité de mise en oeuvre est aussi évidente, par rapport à d’autres produits sur le marché.