Réplication master-slave

Description :

La réplication Master-Slave est un mécanisme où une base de données "master" (maître) envoie des copies de ses données à une ou plusieurs bases de données "slaves" (esclaves). Ce type de réplication est particulièrement utile pour la répartition de la charge de lecture, la sauvegarde et la haute disponibilité.

Fonctionnement :

  • Le serveur "master" gère toutes les opérations d’écriture (INSERT, UPDATE, DELETE).

  • Les changements sont enregistrés dans un journal binaire (binlog) sur le serveur master.

  • Les serveurs "slaves" se connectent au master, lisent le journal binaire et reproduisent les modifications sur leurs propres copies.

  • Les requêtes de lecture peuvent être réparties entre les slaves pour décharger le serveur master.

Avantages :

  • Scalabilité de la lecture : Les requêtes SELECT peuvent être distribuées sur les slaves.

  • Sauvegarde et redondance : En cas de panne du master, un slave peut être promu master (en effectuant un basculement manuel).

Inconvénients :

  • Pas de scalabilité de l’écriture : Toutes les écritures doivent toujours passer par le serveur master.

  • Temps de latence : Il peut y avoir un léger retard entre les mises à jour sur le master et leur application sur les slaves.

Configuration :

  1. Configurer le Master :

    • Activer le fichier de binlogs sur le master.

    • Définir une identité unique pour le serveur master.

    • Créer un utilisateur de réplication sur le master.

    -- Activer les logs binaires
    [mysqld]
    log-bin = /var/log/mysql/mysql-bin.log
    server-id = 1
    
    -- Créer un utilisateur pour la réplication
    CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
  2. Configurer le Slave :

    • Indiquer l’identité du serveur.

    • Se connecter au master pour lire les journaux binaires.

    [mysqld]
    server-id = 2
    
    -- Configurer le slave pour se connecter au master
    CHANGE MASTER TO
    MASTER_HOST='ip_du_master',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS= 107;
  3. Démarrer la réplication :

    sqlCopier le codeSTART SLAVE;
    SHOW SLAVE STATUS\G;

Last updated