Bonjour, Pour la répartition de charge sur MySQL, nous sommes partis sur plusieurs choses :
Côté applicatif, séparation des requêtes lecture / écriture au niveau de notre framework de connexion à la base de données avec deux handlers, un pour les écritures et un pour les lectures. Côté infrastructure : - Un master avec une VIP de réplication, du heartbeat et un script de bascule de la réplication en cas de crash du master. - Un load balancer avec une VIP pour la lecture, avec heartbeat + haproxy * des slaves derrière le haproxy * un script qui check le seconds_behind_master du show slave status et retire les slaves de la grappe en cas de seconds_behind_master > 0 * le master en backup si aucun slave n'est disponible Comme nous sommes tributaires d'un délai de réplication de l'ordre de la seconde, nous gérons en plus les retards de réplication au niveau applicatif quand celui-ci tente d'accéder à un objet qui n'existe pas encore sur le slave, en postposant la requête d'une seconde. Hope it helps Le 9 sept. 2013 à 15:10, Thomas Pedoussaut <tho...@pedoussaut.com> a écrit : > Pour la partie repartition de charge entre les slaves, j'utilise depuis des > années (2006) du LVS géré par keepalived. > > En particulier une partie intéressante: > MISC_CHECK { # MISC healthchecker > misc_path <STRING>|<QUOTED-STRING> # External system script or > program > misc_timeout <INTEGER> # Script execution timeout > > # If set, exit code from healthchecker is used > # to dynamically adjust the weight as follows: > # exit status 0: svc check success, weight > # unchanged. > # exit status 1: svc check failed. > # exit status 2-255: svc check success, weight > # changed to 2 less than exit status. > # (for example: exit status of 255 would set > # weight to 253) > misc_dynamic > > Donc en jouant bien sur ton script de monitoring, tu peux ejecter les > serveurs trop en retard, et alterer le poids de chaque serveur en fonction de > la charge. > > En faisant du lvs-dr ca depotte pas mal, meme avec une dizaine de slaves, > sans SPOF. > > > On 2013-09-09 09:45, Greg wrote: >> Bonjour, >> >> pour l'instant je n'ai pas trouvé mieux qu'une gestion coté applicatif pour >> répartir les requêtes de lecture (SELECT...) sur les slaves MySQL, et les >> requêtes d'écritures sur le master, avec gestion un peu plus intelligente >> qu'un simple load-balancer : >> - regex sur la requête pour pouvoir l'orienter >> - gestion des slaves down, spares >> - exclusion des slaves ayant trop de délais de réplication >> >> Pour tout ça MySQL Proxy semblait tout faire sur le papier, à l'aide de >> scripts LUA : http://dev.mysql.com/doc/relnotes/mysql-proxy/en/index.html >> >> Avez vous des retours sur cet outil ? Où sur d'autres outils ? >> >> Greg >> >> >> _______________________________________________ >> Liste de diffusion du FRsAG >> http://www.frsag.org/ > > _______________________________________________ > Liste de diffusion du FRsAG > http://www.frsag.org/ -- Frédéric de Villamil / @fdevillamil I'm not strange, weird, off, nor crazy, my reality is just different from yours. Le Rayon UX – http://t37.net
_______________________________________________ Liste de diffusion du FRsAG http://www.frsag.org/