Réplication maître-esclave MySQL sur CentOS 7

Réplication maître-esclave MySQL sur CentOS 7
Réplication maître-esclave MySQL.

Introduction

La réplication MySQL est le processus de copie automatique des données d’un serveur de base de données vers un ou plusieurs serveurs.

MySQL offre une variété de topologies de réplication, dont la plus connue est la topologie Maître/Esclave, dans laquelle un serveur de base de données fonctionne comme le maître et un ou plusieurs serveurs fonctionnent comme esclaves. Par défaut, la réplication est asynchrone, le maître envoyant les événements à son journal binaire qui décrit les changements de base de données et les esclaves demandant les événements quand ils sont prêts.

Exigences de base

Dans cet article, nous allons vous montrer comment configurer une réplication MySQL Master/Slave sur CentOS 7 avec un serveur maître et un serveur esclave. Les mêmes procédures s’appliquent à MariaDB.
Cette architecture de réplication est la mieux adaptée à la réplication en lecture.

Dans cet exemple, nous supposons que vous avez deux serveurs exécutant CentOS 7, et qu’ils peuvent communiquer entre eux via un réseau privé. Si votre hébergeur ne fournit pas d’adresses IP privées, vous pouvez utiliser des adresses IP publiques et configurer le pare-feu pour n’autoriser que le trafic sur le port 3306 à partir de sources fiables.

Les adresses IP des serveurs dans cet exemple sont les suivantes :

Master IP : 10.10.0.44
Slave IP :  10.10.0.20

Installation de MySQL

Vous pouvez suivre cet article sur l’installation de MySQL sur CentOS/RHEL 7/6 & Fedora 31/30.

Configurer le serveur maître

Tout d’abord, nous allons configurer le serveur maître MySQL avec les changements suivants :

  • Configurez le serveur MySQL pour écouter à son adresse IP privée.
  • Créez un ID de serveur distinct.
  • Activez la journalisation binaire.

Pour ce faire, éditez le fichier de configuration MySQL et insérez les lignes suivantes dans la section [mysqld] :

$ sudo nano /etc/my.cnf
Serveur Maître :/etc/my.cnf
bind-address           = 10.10.0.44
server-id              = 44
log_bin                = mysql-bin

Une fois terminé, redémarrez le service MySQL pour que les modifications prennent effet.

$ sudo systemctl restart mysqld

L’étape suivante consiste à configurer un nouvel utilisateur de réplication. Connectez-vous en tant qu’utilisateur root au serveur MySQL :

$ mysql -uroot -p

Exécutez les instructions SQL suivantes à partir de l’invite MySQL pour créer l’utilisateur slave1 et lui accorder le privilège REPLICATION SLAVE :

mysql> CREATE USER 'slave1'@'10.10.0.20' IDENTIFIED BY 'secret_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave1'@'10.10.0.20';

Pendant que vous êtes toujours dans l’invite MySQL, utilisez la commande suivante pour afficher le nom et la position du fichier binaire.

mysql> SHOW MASTER STATUS\G
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 1714
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

Notez le nom de fichier « mysql-bin.000001 » et la position « 1714 ». Vous aurez besoin de ces valeurs lors de la configuration du serveur esclave. Ces valeurs peuvent être différentes sur votre serveur.

Configurer le serveur esclave

  • Tout comme le serveur maître, nous apporterons les modifications suivantes au serveur esclave :
  • Configurez le serveur MySQL pour écouter sur son adresse IP privée.
    Créez un ID de serveur distinct.
  • Activez la journalisation binaire.

Saisissez le fichier de configuration MySQL et modifiez les lignes suivantes :

$ sudo nano /etc/my.cnf
Serveur esclave :/etc/my.cnf
bind-address           = 10.10.0.20
server-id              = 20
log_bin                = mysql-bin

Redémarrez le service MySQL pour que les modifications prennent effet.

$ sudo systemctl restart mysqld

L’étape suivante consiste à définir les paramètres qui seront utilisés par le serveur esclave pour se connecter au serveur maître. Connectez-vous au shell MySQL comme suit :

$ mysql -uroot -p

Tout d’abord, arrêtez les fils esclaves (slave threads) :

mysql> STOP SLAVE;

Exécutez la requête suivante pour configurer l’esclave pour dupliquer le maître :

mysql> CHANGE MASTER TO
mysql> MASTER_HOST='10.10.0.44',
mysql> MASTER_USER='slave1',
mysql> MASTER_PASSWORD='secret_password',
mysql> MASTER_LOG_FILE='mysql-bin.000001',
mysql> MASTER_LOG_POS=1714;

Assurez-vous d’utiliser l’adresse IP, le nom d’utilisateur et le mot de passe appropriés. Le nom et l’emplacement du fichier journal doivent être les mêmes valeurs que celles obtenues du serveur maître.

Après cela, commencer les fils esclaves.

mysql> START SLAVE;

Tester la configuration

Vous devriez maintenant avoir une configuration de réplication Maître/Esclave fonctionnelle.

Sur le serveur maître, nous créerons une nouvelle base de données pour nous assurer que tout fonctionne comme prévu :

$ mysql -uroot -p
mysql> CREATE DATABASE test_db;

Connectez-vous au shell slave MySQL avec la commande suivante :

$ mysql -uroot -p

Utilisez la commande suivante pour lister toutes les bases de données :

mysql> SHOW DATABASES;
Output :
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test_db            |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Conclusion

Dans cet article, nous avons montré comment configurer une réplication MySQL Master/Slave sur CentOS 7.

Laisser un commentaire