Page 1 sur 2

mysql : répartition de charge sur plusieurs cpu

Posté : 11 sept. 2009, 18:42
par kanaille
Bonjour,

Bon, je me demande s'il est possible de faire du load balancing avec mysql. J'ai recherché sur google sans succès.

Merci.

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 12 sept. 2009, 10:20
par Berzemus
On parlera plutôt de clustering, pour mysql.

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 12 sept. 2009, 11:09
par stopher
Salut ,

Exactement , comme le dit Berz., tu peux répartir la charge via

du clustering : 3 serveurs minimum

Tu as donc une machine maître , qui repartie les requêtes sur les deux serveurs les select peuvent donc être balancé soit sur l'un soit sur l'autre , par contre , les update / delete / insert sont toujours balancé sur les deux serveurs . afin qu'ils soient toujours identiques


ou

De la réplication ( 2 serveurs mais plus délicat à mettre en place et à maintenir )

Pour la réplication , le principe est simple , un maître , un esclave , l'esclave reproduit tout ce que fait le maître n en temps réel , si le maître tombe en panne , tu peux donc utiliser l'esclave comme roue de secours .
Pour ce qui est de la répartition de charge , c'est au niveau de ton code que ca se passe , tu peux faire pointer les select vers l'esclave , et le reste vers le maître . NE JAMAIS FAIRE DE MODIFICATIONS DIRECTE SUR L'ESCLAVE sinon , ta réplication est brisé . elle ne fonctionne plus !


Voilà .
Good luck,
Ch.

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 12 sept. 2009, 18:58
par kanaille
Vous avez parfaitement répondu à ma question mais malheureusement, je me suis mal exprimé car j'ai jeté un coup d'oeil et ce n'est pas ce que je recherche.

Mon problème est bien plus simple : je suis sous debian, j'ai un processeur 4 coeurs et je trouve dommage que mysql n'utilise qu'un seul processeur et qu'il laisse libre les 3 autres. :(

Quand l'opération prend 3 secondes ce n'est pas grave mais parfois mysql sollicite 5 ou 6 mn le processeur (peu de select et surtout des update/delete/insert) et si je pouvais diviser par 4 ce temps, ça serait quand même mieux. :-k

Une idée svp ?

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 12 sept. 2009, 22:57
par stopher
Je ne sais pas si c'est une bonne idée de modifier l'ordonnancement naturel , mais bon , pourquoi pas tester ..

As tu tester la commande http://manpages.ubuntu.com/manpages/jau ... set.1.html ?

Ch.

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 13 sept. 2009, 01:05
par Berzemus
Je ne pense pas que mysql soit intrinsèquement parallèle. Voir même pas du tout. Pour ça, des DB plus orientés vers le parallélisme et la distribution tels que CouchDb sont plus conseillés.

Mais il parait qu'un certain parallélisme est possible avec un proxy mysql:

http://forums.mysql.com/read.php?146,16 ... msg-163523

Mais bref, c'est ardu comme machin :wink:

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 13 sept. 2009, 16:24
par kanaille
Hummm vu vos doutes, je ne dois pas être sur la bonne voie.

Je me dis qu'en fin de compte, le cluster devrait me convenir : je peux diviser mes opérations en 2, ce qui pourrait être réparti sur plusieurs serveurs mysql.

J'ai regardé le site de mysql et je vois qu'il y a 2 types de serveurs : "entreprise" et "cluster" (en plus de ma version de base qui est "community" je pense).

Dois-je changer de mysql pour lancer plusieurs serveurs mysql ? Si oui, je choisis entreprise ou cluster ?

Merci pour votre aide, je commence à voir le bout du tunnel.

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 13 sept. 2009, 19:55
par Berzemus
Mysql propose plein de produits, c'est un peu plus complexe que enterprise, community & cluster.

Comme je le disais, une de ses solutions est le proxy mysql:
http://dev.mysql.com/downloads/mysql-proxy/index.html

A ta place, j'essaierais de voir en profondeur en quoi ça consiste, puisque ça à l'air de faire ce que tu recherche (perso, j'ai jamais eu besoin d'utiliser ni le clustering, ni le proxy).

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 13 sept. 2009, 20:42
par kanaille
J'ai regardé en détail le paquet -proxy. J'ai compris le principe et je pense qu'il va beaucoup m'aider. Je vais essayer de faire comme ça :

1° Essayer de lancer 2 serveurs mysql (je suis dessus depuis 3 bonnes heures sans arriver à configurer correctement mon my.cnf). Ainsi 2 processeurs différents sont susceptibles d'être utilisés.

2° Je vais utiliser mysql-proxy afin de répartir la charge sur l'un ou l'autre des deux serveurs.

Merci !! Dès que j'arrive à lancer 2 serveurs, je donne des news !!

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 10:23
par Berzemus
Merci !! Dès que j'arrive à lancer 2 serveurs, je donne des news !!
Super, on adore le retour d'expérience :wink:

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 20:33
par kanaille
Hello,

Alors voici mon retour d'expérience :

1° J'ai (enfin) configuré plusieurs serveurs bien distincts mysql. J'ai également affecté ces serveurs sur des processeurs précis avec taskset. C'est un vrai bonheur à présent. Ca ne me sert à rien, ça demande une gestion compliquée des sockets et des ports mais c'est rigolo :-)

2° j'ai également mis en place mysql-proxy. Bon, c'est pas le plus difficile à mettre en place, même pas du tout. Par contre, je n'ai rien pour tester donc tant pis pour l'instant.

Bon, je considère mon problème comme résolu. Merci à vous deux pour votre inestimable aide !!! :pouce: =D>

-------------
p.s. : Comme vous êtes 2 à m'avoir aidé, comment faire pour marquer 'résolu' grâce à 2 posts différents ?

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 21:02
par stopher
Bravo ,

et merci du retour ,
reste plus qu'à faire des bench , voir si le jeu en vaut la chandelle ..

Bon amusement :)

Ch.

PS: n'oublie pas de passer ton sujet en résolu .

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 21:22
par AB
Comme vous êtes 2 à m'avoir aidé, comment faire pour marquer 'résolu' grâce à 2 posts différents ?
Tu choisis l'un ou l'autre indifféremment. Justement à ce propos, en considérant que le problème se poserait souvent, on s'est mis d'accord pour ne pas exploiter cette donnée. D'ailleurs elle n'apparaît plus dans le topic une fois résolu, seul le titre apparaît comme tel :wink:

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 22:04
par kanaille
merci à toi et à Berzemus surtout !! =D>

Un copain vient de s'acheter un nouvel ordi et va me donner son ancienne tour (un vieux coucou qui marche super bien). J'essayerai de faire fonctionner mysql sur le réseau local. Ca peut être sympa.
Bravo ,

et merci du retour ,
reste plus qu'à faire des bench , voir si le jeu en vaut la chandelle ..

Bon amusement :)

Ch.

PS: n'oublie pas de passer ton sujet en résolu .

Re: mysql : répartition de charge sur plusieurs cpu

Posté : 14 sept. 2009, 22:06
par kanaille
Comme vous êtes 2 à m'avoir aidé, comment faire pour marquer 'résolu' grâce à 2 posts différents ?
Tu choisis l'un ou l'autre indifféremment. Justement à ce propos, en considérant que le problème se poserait souvent, on s'est mis d'accord pour ne pas exploiter cette donnée. D'ailleurs elle n'apparaît plus dans le topic une fois résolu, seul le titre apparaît comme tel :wink:
Bon bah si c'est indifférent. Merci.