Dessine-moi MySQL : la réplication Master-Slave

18 septembre 2008 par arnaud

« Un schéma vaut mille mots », l’idée est toute simple : tenter d’exprimer en un schéma une idée précise concernant MySQL.

Il s’agit ici du type de schéma que nous avons tous griffonné pour un collègue ou soi-même afin de clarifier un processus : pas de powerpoint, pas de visio mais un brouillon, un stylo, et hop.

La règle du jeu : le schéma doit dans l’idéal se suffire à lui-même et ne pas forcément engendrer un billet qui ferait office de « légende »… Néanmoins quelques mots d’explications ne sont parfois pas de trop, même à côté d’un schéma, donc tout est possible.

La « richesse » des schémas/dessins viendra également des commentaires qui leur seront attribués, de la même façon que les commentaires enrichissent les billets d’un blog en ajoutant au billet initial les questions/retours d’expérience des lecteurs. Je vous encourage donc à poster des commentaires les concernant : questions, remarques, etc.

Voici ce que donne cette première tentative…

mysql-replication-master-slave

Que pensez-vous de ce premier schéma/prototype ? Lisible ? La résolution ? Des remarques ?

J’attends vos retours/suggestions afin de déterminer si l’idée vous plaît, auquel cas ce premier essai pourrait se transformer en une série au doux nom de « Dessine-moi MySQL » qui pourrait s’avérer très sympa… à condition bien sûr de savoir déchiffrer mes hiéroglyphes, ce qui je vous l’accorde représente un certain challenge.

A vos claviers !

Mots-clefs : , ,

11 commentaires sur “Dessine-moi MySQL : la réplication Master-Slave”

  1. jj dit :

    Ne mettre que des MAJUSCULES => plus clair je trouve (?). Bon courage ;)

  2. maryam dit :

    C’est trés intéressant mais par contre au niveau de la lisibilité…J’aurai préféré avoir un schéma ppt ou visio…Mais sinon sympa ce post!

  3. Arnaud dit :

    Le message est passé, je vais tenter d’améliorer la lisibilité pour les prochains schémas. Cela dit je n’ai pas prévu de passer aux ppt/visio pour le moment puisque l’idée est de partager un concept à l’aide d’un schéma à main levée, bien sûr en essayant de conserver un maximum de lisiblité, c’est le challenge sur cette série…

  4. [...] tenté de tenir compte de vos commentaires précédents, notamment sur les majuscules, est-ce plus lisible [...]

  5. Kais dit :

    Bonjour,
    Je veus bien savoir si la replication master slave peut – elle se faire sur plusieurs postes (+ que 2).

    Dans l’attente de votre réponse et merci d’avance.

    Kais

  6. pébé dit :

    C est a dire? 1 master 2 slaves?
    oui… tu es limité par la capacité de ton master. 1 slave = 1 connection.
    J ai deja vu des masters avec plus de 100 slaves

  7. andras dit :

    Bonjour,
    Google m’a amené sur votre blog. ma question n’est pas directement liée à cet article mais je ne sais pas où la poser alors voilà :

    Est-il possible de faire une réplication MYSQL en temps différé (et si oui comment …) ?
    Pourquoi faire ? Eh bien par exemple, si l’on vide une table par erreur, la réplication en temps réel va répercuter immédiatement la commande sur le slave et on aura également vidé la table sur le SLAVE.
    Une réplication différée d’une heure par exemple, permet de récupérer la table intacte sur le slave (si on s’aperçoit de son erreur à temps, bien sûr). Vous me direz qu’on a perdu une heure de transactions mais dans pas mal de cas, ce serait quand même bien utile (je pense).

    Merci de me dire ce que vous en pensez et si vous connaissez une solution.
    andras

  8. pébé dit :

    Salut andras,
    Il n’y a, à ma connaissance, pas de solution possible pour l’instant. Tu n’es pas le premier à avoir eu cette idée, j’en avais parlé y a quelques années avec Jeremy et Eric ( Proven Scaling ) et en analysant le code source de la réplication nous sommes vite arrivé à la conclusion que… ce n’est pas évident à faire.
    Ce que tu pourrais envisager c’est de coder çà en dehors de MySQL, un script qui récupére les binlogs, les parse et importe les data dans ton « pseudo » slave…
    Tu pourrais ainsi introduire un retard dans l’import.
    Par contre, Oracle permet de différer sa réplication.

  9. andras dit :

    Merci de ta réponse.
    En cherchant de mon côté je suis tombé sur la solution. Elle existe sous la forme d’une boite à outils pour MySQL que je ne connaissais pas : maatkit (autrefois appelé : MYSQL toolkit).
    http://www.maatkit.org/
    http://code.google.com/p/maatkit/
    L’un des developpeur du tookit est Baron Schwartz, le principal auteur du livre « High Performance MySQL » de chez O’reilly. Une référence donc.

    L’un des outils permet de faire exactement ce que je souhaitais : http://www.maatkit.org/doc/mk-slave-delay.html

    La documentation est succinte et au debut je n’ai pas compris comment utiliser la syntaxe key/value qu’ils utilisent pour passer les paramètres du host (notamment). Mais quelqu’un sur la mailing list m’a aidé et j’ai même eu une reponse de Baron Schwartz himself ! ;-)

    Finalement, pour un delay de 30m +/- 15s avec le master, il faut lancer sur le slave :
    > mk-slave-delay –delay 30m –interval 15s h=localhost,u=admin,p=passwd

  10. pébé dit :

    rah c’est vrai :) j’ai oublié maatkit mais bon en même temps c’est lundi et je suis encore fatigué du week end!!
    Oui je connais Baron et j’ai entendu parler de « High Performance MySQL » :p

Laisser une réponse