mysql : répartition de charge sur plusieurs cpu

Eléphant du PHP | 83 Messages

11 sept. 2009, 18:42

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.
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

ViPHP
ViPHP | 4039 Messages

12 sept. 2009, 10:20

On parlera plutôt de clustering, pour mysql.
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

ViPHP
ViPHP | 1136 Messages

12 sept. 2009, 11:09

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.

Eléphant du PHP | 83 Messages

12 sept. 2009, 18:58

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 ?
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

ViPHP
ViPHP | 1136 Messages

12 sept. 2009, 22:57

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.

ViPHP
ViPHP | 4039 Messages

13 sept. 2009, 01:05

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:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 83 Messages

13 sept. 2009, 16:24

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.
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

ViPHP
ViPHP | 4039 Messages

13 sept. 2009, 19:55

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).
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 83 Messages

13 sept. 2009, 20:42

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 !!
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

ViPHP
ViPHP | 4039 Messages

14 sept. 2009, 10:23

Merci !! Dès que j'arrive à lancer 2 serveurs, je donne des news !!
Super, on adore le retour d'expérience :wink:
Mais qu'importe. (je suis ici - dernier petit projet)
Berze going social.

Eléphant du PHP | 83 Messages

14 sept. 2009, 20:33

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 ?
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

ViPHP
ViPHP | 1136 Messages

14 sept. 2009, 21:02

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 .

ViPHP
AB
ViPHP | 5818 Messages

14 sept. 2009, 21:22

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:

Eléphant du PHP | 83 Messages

14 sept. 2009, 22:04

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 .
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/

Eléphant du PHP | 83 Messages

14 sept. 2009, 22:06

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.
c'est pas mon site mais je soutiens : http://www.consommateurendanger.org/