Forum Programmation.SQL Réplication de base MySQL

Posté par  (site web personnel) .
Étiquettes : aucune
0
30
août
2010
Bonjour,

Je me tourne vers toi, le forum qui m'a parfois sauvé la vie, pour une question dont je ne trouve pas de vrai réponse.

J'aimerai répliquer juste une base de données sur un serveur MySQL mais pas l'ensemble des bases hébergés.

Mon but étant :
J'ai un serveur MySQL A et un serveur MySQL B. Sur MySQL A j'ai une base de données X et sur MySQL B une base de données Y.
Je veux répliquer la base X sur MySQL B et la base Y sur MySQL A. Comme ça si j'ai une coupure de service je peux rediriger mon applicatif web sur l'autre serveur pour continuer à consulter.

Du coup il est hors de question de faire une réplication complète tel que décrite dans la doc de mysql ou un serveur est maitre et l'autre esclave.

Cher lecteur, si tu as une idée ou bien même une piste de recherche, merci de me l'indiquer.
  • # M-M

    Posté par  . Évalué à 2.

    Avec seulement 2 machines: que le master-master.
    Nécessite une incrémentation des index particulière, et donc pas forcément compatible avec l'application.
    • [^] # Re: M-M

      Posté par  . Évalué à 2.

      Nop le coup des index c'est quand master-master sur une meme base.
      Là il annonce 2 bases différentes.
      • [^] # Re: M-M

        Posté par  . Évalué à 2.

        Et bien, il fait 2 master alors.
        En cas de défaut d'un des serveurs, le master slave laissera une des deux bases non synchronisées. Le master-slave est orienté répartition de charge.
        Pour le de vraie HA, c'est master-master.
        • [^] # Re: M-M

          Posté par  . Évalué à 2.

          Heu oui c'est toi meme qui le dit plus haut :
          "Avec seulement 2 machines: que le master-master."
          Je revenais juste sur ta phrase :
          "Nécessite une incrémentation des index particulière, et donc pas forcément compatible avec l'application."
          Ce qui n'est pas juste dans __son__ cas car 2 bases différentes donc pas d'alternance des ID nécessaire.
  • # RTFM ?

    Posté par  . Évalué à 2.

    Il existe deux options qui vont t'aider:
    --replicate-do-db : http://dev.mysql.com/doc/refman/5.1/en/replication-options-s(...)
    --replicate-ignore-db : http://dev.mysql.com/doc/refman/5.1/en/replication-options-s(...)
    • [^] # Re: RTFM ?

      Posté par  . Évalué à 2.

      Ne serait-il-pas plus simple (et plus sûr cf. le point sur USE adb; update anotherdb.table qui ne marche pas) d'installer 2 instances de mysql sur chaque machine ? Vu que dans le setup actuel les 2 services sont déja sur des instances séparées.

      Just my 2€c.
    • [^] # Re: RTFM ?

      Posté par  (site web personnel) . Évalué à 1.

      Si j'en crois le manuel on est toujours sur une politique de : un serveur maitre et un serveur esclave.

      Mon problème est donc que chacun de mes serveur doit être maitre sur une base et esclave sur une autre.

      Ou sinon si c'est vraiment ça alors je ne comprend vraiment rien à la conf de mysql ...
      • [^] # Re: RTFM ?

        Posté par  (site web personnel) . Évalué à 2.

        Bonjour,

        éventuellement, tu pourrais envisager deux serveur mysql par machine, un maître et un esclave. Je sais, ça consomme plus de ressources... mais ça peut répondre à la question, non?

        A bientôt
        G

        Pourquoi bloquer la publicité et les traqueurs : https://greboca.com/Pourquoi-bloquer-la-publicite-et-les-traqueurs.html

      • [^] # Re: RTFM ?

        Posté par  . Évalué à 1.

        Il te faut configurer chaque serveur mysql comme maître ET esclave de l'autre.

        La conf de chaque côté sera du style (en espérant que j'ai pas trop viré de lignes de mon my.cnf mais j'ai fait vite :/)

        #---------------------------------------------------------
        # configuration pour la replication
        #---------------------------------------------------------
        # id de la machine
        server-id=2

        # machine sur laquelle on lit la replication
        master-host=db02

        #----------------------------------------------------------
        # configuration des logs en tant que maitre
        #----------------------------------------------------------
        log-bin=/logs/binary/binary.log
        log-bin-index=/logs/binary/log.index
        max_binlog_size=512M

        #----------------------------------------------------------
        # configuration des logs en tant qu esclave
        #----------------------------------------------------------
        relay-log=/logs/relay/relay.log
        relay-log-index=/logs/relay/log-relay.index
        relay-log-info-file=/logs/relay/relay-log.info
        master-info-file=/logs/relay/master.info

        # Pour la rotation automatique des logs
        set-variable=max_relay_log_size=256

        #----------------------------------------------------------
        # configuration des db/tables repliquees en tant que maitre
        #----------------------------------------------------------

        #----------------------------------------------------------
        # configuration des db/tables repliquees en tant qu esclave
        #----------------------------------------------------------
        replicate-ignore-db=admin
        ...


        En tout cas, pas de pb, c'est faisable (à peu près) comme je te l'indique, c'est ce que j'utilise :)

        (renseigne sur le mignon pb évoqué plus haut lié à use db, ce n'est pas un bug selon MySQL mais une feature et une feature de cette qualité, vaut mieux être au courant...)
        • [^] # Re: RTFM ?

          Posté par  (site web personnel) . Évalué à 1.

          #----------------------------------------------------------
          # configuration des db/tables repliquees en tant que maitre
          #----------------------------------------------------------

          dans cette section je rajoute donc ma conf de maitre ? (désolé je suis une quiche en MySQL mais je tente de progresser :) )

          Parce que sinon tout le reste de ce que tu me propose c'est la conf d'un serveur esclave donc vu que tu me parle de passer en maitre et esclave à la fois c'est ce qui semble à mes yeux le plus probable.

          Merci pour les infos sinon ça me donne une belle piste de recherche.
        • [^] # Re: RTFM ?

          Posté par  (site web personnel) . Évalué à 1.

          ou sinon tu fait une "simple" configuration mysql multi-master, sans trop te prendre la tête avec le problème des incréments d'index si tu sait que jamais tu n'auras besoin qu'une application tape sur les deux serveurs (dans les fait, mieux vaut se prendre un peu la tête avec, juste au cas ou).

          ET hop, chaque machine disposera des deux bases, et effet non négligeable si tu perd un serveur tu peut continuer a travailler sur l'autre et les ecritures seront resynchronisable lors du retour du premier.

          c'est t'y pas beau ça.

          pour le comment, je te laisse chercher sur google hein tu est grand

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.