Recherche de site Web

Comment configurer la réplication MySQL dans RHEL, Rocky et AlmaLinux


La réplication des données est le processus de copie de vos données sur plusieurs serveurs pour améliorer la disponibilité des données et améliorer la fiabilité et les performances d'une application. Dans la réplication MySQL, les données sont copiées d'une base de données du serveur maître vers d'autres nœuds en temps réel pour garantir la cohérence des données et également pour fournir une sauvegarde et une redondance.

Dans ce guide, nous montrons comment configurer la réplication MySQL (Maître-Esclave) dans des distributions basées sur RHEL telles que CentOS, Fedora, Rocky Linux et AlmaLinux.

Configuration de la réplication MySQL

Voici donc notre configuration de laboratoire de réplication MySQL.

MySQL Master - 10.128.0.14
MySQL Slave - 10.128.15.211

Commençons…

Étape 1 : Installer MySQL sur les serveurs maître et esclave

Nous allons commencer par installer la base de données MySQL sur les serveurs maître et esclave.

sudo dnf install @mysql

Une fois l'installation terminée, assurez-vous de démarrer le serveur de base de données.

sudo systemctl start mysqld

Activez-le ensuite pour démarrer le démarrage du système ou au redémarrage.

sudo systemctl enable mysqld

Ensuite, vérifiez que le serveur de base de données MySQL fonctionne comme indiqué :

sudo systemctl status mysqld

Étape 2 : Sécuriser MySQL sur les serveurs maître et esclave

L'étape suivante consiste à sécuriser la base de données MySQL sur les serveurs maître et esclave. En effet, les paramètres par défaut ne sont pas sécurisés et présentent des failles qui peuvent facilement être exploitées par les pirates.

Donc, pour renforcer MySQL, exécutez la commande :

sudo mysql_secure_installation

Tout d’abord, vous devrez définir le mot de passe root MySQL. Assurez-vous de fournir un mot de passe root fort, de préférence avec plus de 8 caractères qui sont un mélange de majuscules, minuscules, spéciaux et numériques.

Pour les invites restantes, tapez 'Y' pour ajuster le serveur de base de données aux paramètres recommandés.

Une fois que vous avez terminé d'installer et de renforcer MySQL sur le nœud maître et esclave, la prochaine étape consiste à configurer le nœud maître.

Étape 3 : configurer le nœud maître (serveur)

L'étape suivante consiste à configurer le nœud Maître et à accorder au nœud esclave l'accès à celui-ci. Tout d’abord, nous devons éditer le fichier de configuration mysql-server.cnf.

sudo vim /etc/my.cnf.d/mysql-server.cnf

Ajoutez les lignes suivantes sous la section [mysqld].

bind-address	 = 10.128.0.14
server-id 	 = 1
log_bin		 = mysql-bin

Une fois terminé, enregistrez les modifications et quittez. Redémarrez ensuite le serveur MySQL.

sudo sysemctl restart mysqld

Ensuite, connectez-vous au shell MySQL.

sudo mysql -u root -p

Exécutez les commandes suivantes pour créer un utilisateur de base de données qui sera utilisé pour lier le maître et l'esclave pour la réplication.

mysql> CREATE USER 'replica'@'10.128.15.211' IDENTIFIED BY 'P@ssword321';
mysql> GRANT REPLICATION SLAVE ON *.*TO 'replica'@'10.128.15.211';

Appliquez les modifications et quittez le serveur MySQL.

mysql> FLUSH PRIVILEGES;
mysql> EXIT;

Vérifiez l'état du maître.

mysql> SHOW MASTER STATUS\G

Prenez note du nom du fichier et de la position. Vous en aurez besoin plus tard lors de la configuration de l'esclave pour la réplication. Dans notre cas, nous avons le nom de fichier mysql-bin.000001 et la position 1232.

Étape 4 : configurer le nœud esclave (serveur)

Maintenant, retournez au nœud Slave. Encore une fois, éditez le fichier de configuration mysql-server.cnf.

sudo vim /etc/my.cnf.d/mysql-server.cnf

Comme auparavant, collez ces lignes sous la section [mysqld]. Modifiez l'adresse IP pour qu'elle corresponde à l'adresse IP de l'esclave. Attribuez également un ID de serveur différent. Nous lui avons attribué ici la valeur 2.

bind-address	 = 10.128.15.211
server-id	 = 2
log_bin 	 = mysql-bin

Enregistrez les modifications et quittez le fichier. Redémarrez ensuite le serveur de base de données.

sudo systemctl restart mysqld

Pour configurer le nœud Esclave afin qu'il soit répliqué à partir du nœud maître, connectez-vous au serveur MySQL de l'esclave.

sudo mysql -u root -p

Avant toute chose, arrêtez les threads de réplication :

mysql> STOP SLAVE;

Exécutez ensuite la commande suivante pour configurer le nœud esclave afin de répliquer les bases de données à partir du maître.

mysql> CHANGE MASTER TO
     MASTER_HOST='10.128.0.14' ,
     MASTER_USER='replica' ,
     MASTER_PASSWORD='P@ssword321' ,
     MASTER_LOG_FILE='mysql-bin.000001' ,
     MASTER_LOG_POS=1232;

Notez que les indicateurs MASTER_LOG_FILE et MASTER_LOG_POS correspondent aux valeurs de fichier et de Position du nœud Master à la fin de Étape 1.

Le MASTER_HOST, le MASTER_USER et le MASTER_PASSWORD correspondent respectivement à l'adresse IP du maître, à l'utilisateur de réplication et au mot de passe de l'utilisateur de réplication.

Démarrez ensuite les threads de réplication esclave :

mysql> START SLAVE;

Étape 4 : test de la réplication maître-esclave MySQL

Maintenant, pour tester si la réplication entre le nœud maître et le nœud esclave fonctionne, connectez-vous au serveur de base de données MySQL sur le nœud maître :

sudo mysql -u root -p

Créez une base de données de tests. Ici, notre base de données de test s'appelle replication_db.

mysql> CREATE DATABASE replication_db;
Verify the existence of the database.
mysql> SHOW DATABASES;

Maintenant, rendez-vous sur le nœud esclave, connectez-vous au serveur MySQL et confirmez que la base de données replication_db est présente. À partir du résultat ci-dessous, nous pouvons voir que la base de données est présente. Ceci confirme que la réplication a eu lieu du nœud maître vers le nœud esclave.

mysql> SHOW DATABASES;

Et voilà, nous avons démontré avec succès comment configurer un modèle de réplication maître-esclave MySQL capable de répliquer des bases de données du nœud maître vers le nœud esclave.