Aller au contenu principal

Qu'est-ce que la réplication

La réplication est un processus par lequel :

  • les données d'une base de données MariaDB sont copiées (répliquées) d'un serveur MariaDB (appelé le serveur principal)
  • vers un ou plusieurs serveurs MariaDB (appelés serveurs secondaires).

Cela peut être utilisé :

  • pour des raisons de performance (répartir la charge de lecture entre plusieurs serveurs),
  • pour des raisons de sécurité (avoir une copie des données en cas de panne du serveur principal)
  • ou pour des raisons de disponibilité des données (avoir les données disponibles à plusieurs endroits).

Notions théoriques

  1. Configuration du serveur principal : Le serveur principal doit être configuré pour enregistrer toutes les modifications apportées aux données dans un journal binaire. Cela est fait en modifiant le fichier de configuration de MariaDB (généralement situé à /etc/mysql/mariadb.conf.d/50-server.cnf) et en ajoutant les lignes suivantes :

    log_bin = /var/log/mysql/mariadb-bin
    log_bin_index = /var/log/mysql/mariadb-bin.index
    server_id = 1

    Le server_id doit être unique pour chaque serveur impliqué dans la réplication.

  2. Configuration du serveur secondaire : Le serveur secondaire doit également être configuré pour enregistrer les modifications dans un journal de relais. Cela est fait en ajoutant les lignes suivantes au fichier de configuration de MariaDB :

    relay_log = /var/log/mysql/mariadb-relay-bin
    relay_log_index = /var/log/mysql/mariadb-relay-bin.index
    server_id = 2

    Le server_id doit être différent de celui du serveur principal.

  3. Création d'un utilisateur de réplication : Sur le serveur principal, un utilisateur de réplication doit être créé. Cet utilisateur est utilisé par le serveur secondaire pour se connecter au serveur principal et copier les modifications. La commande pour créer un utilisateur de réplication est la suivante :

    CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
  4. Démarrage de la réplication : Sur le serveur secondaire, la réplication est démarrée en exécutant la commande suivante :

    CHANGE MASTER TO MASTER_HOST='adresse_ip_du_serveur_principal', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_USE_GTID=current_pos;
    START SLAVE;

Exemple pratique

Supposons que nous ayons deux serveurs MariaDB, un serveur principal avec l'adresse IP 192.168.1.10 et un serveur secondaire avec l'adresse IP 192.168.1.20.

  1. Sur le serveur principal, modifiez le fichier de configuration de MariaDB :

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Ajoutez les lignes suivantes et sauvegardez le fichier :

    log_bin = /var/log/mysql/mariadb-bin
    log_bin_index = /var/log/mysql/mariadb-bin.index
    server_id = 1

    Redémarrez le service MariaDB :

    sudo service mariadb restart

    Connectez-vous à MariaDB en tant qu'utilisateur root et créez un utilisateur de réplication :

    CREATE USER 'replication'@'%' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
  2. Sur le serveur secondaire, modifiez le fichier de configuration de MariaDB :

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Ajoutez les lignes suivantes et sauvegardez le fichier :

    relay_log = /var/log/mysql/mariadb-relay-bin
    relay_log_index = /var/log/mysql/mariadb-relay-bin.index
    server_id = 2

    Redémarrez le service MariaDB :

    sudo service mariadb restart

    Connectez-vous à MariaDB en tant qu'utilisateur root et démarrez la réplication :

    CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication', MASTER_PASSWORD='password', MASTER_USE_GTID=current_pos;
    START SLAVE;

Test de mémorisation/compréhension


Quelle est l'utilité du journal binaire sur le serveur principal?


Quelle est l'utilité du journal de relais sur le serveur secondaire?


Quelle commande permet de créer un utilisateur de réplication sur le serveur principal?


Quelle commande permet de démarrer la réplication sur le serveur secondaire?



Travail à faire

Atelier sur la réplication

et

Rédiger une documentation technique