Recherche de site Web

Comment configurer la réplication maître-esclave MySQL sur Ubuntu 18.04


La réplication maître-esclave MySQL est une procédure qui permet de répliquer ou de copier des fichiers de base de données sur un ou plusieurs nœuds d'un réseau. Cette configuration offre une redondance et une tolérance aux pannes de sorte qu'en cas de panne dans le nœud maître, les bases de données peuvent toujours être récupérées dans le nœud esclave. Cela donne aux utilisateurs la tranquillité d'esprit que tout ne sera en aucun cas perdu, car une réplique des bases de données peut toujours être récupérée à partir d'un autre serveur.

Dans ce guide, vous allez apprendre à effectuer une réplication Maître-esclave d'une base de données MySQL sur un système Ubuntu 18.04.

Conditions préalables

Dans la configuration, nous allons avoir deux serveurs exécutant Ubuntu 18.04 avec les adresses IP suivantes.

Master server: 10.128.0.28
Slave server: 10.128.0.29

Voyons maintenant comment configurer la configuration de la réplication Maître-esclave sur Ubuntu.

Étape 1 : Installer MySQL sur les nœuds maître et esclave

Les dépôts Ubuntu contiennent la version 5.7 de MySQL. Pour profiter de toutes les nouvelles fonctionnalités et éviter des problèmes potentiels, vous devez installer la dernière version de MySQL. Mais d’abord, mettons à jour les deux nœuds à l’aide de la commande apt suivante.

sudo apt update

Pour installer MySQL sur les deux nœuds, exécutez la commande.

sudo apt install mysql-server mysql-client

Ensuite, ouvrez le fichier de configuration mysql.

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

Sur le Nœud maître, faites défiler et localisez l'attribut bind-address comme indiqué ci-dessous.

bind-address 	 =127.0.0.1

Modifiez l'adresse de bouclage pour qu'elle corresponde à l'adresse IP du nœud maître.

bind-address  	=10.128.0.28

Ensuite, spécifiez une valeur pour l'attribut server-id dans la section [mysqld]. Le numéro que vous choisissez ne doit correspondre à aucun autre numéro d'identification de serveur. Attribuons la valeur 1.

server-id	 =1

A la toute fin du fichier de configuration, copiez et collez les lignes ci-dessous.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Quittez le fichier de configuration et redémarrez le service MySQL pour que les modifications prennent effet sur le nœud maître.

sudo systemctl restart mysql

Pour vérifier que le serveur MySQL fonctionne comme prévu, exécutez la commande.

sudo systemctl status mysql

Parfait! Le serveur MySQL fonctionne comme prévu !

Étape 2 : Créer un nouvel utilisateur pour la réplication sur le nœud maître

Dans cette section, nous allons créer un utilisateur de réplication dans le nœud maître. Pour y parvenir, connectez-vous au serveur MySQL comme indiqué.

sudo mysql -u root -p

Ensuite, continuez et exécutez les requêtes ci-dessous pour créer un utilisateur de réplique et accorder l'accès à l'esclave de réplication. N'oubliez pas d'utiliser votre adresse IP.

mysql> CREATE USER 'replication_user'@'10.128.0.29' IDENTIFIED BY 'replica_password';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'replication_user '@'10.128.0.29';

Ensuite, exécutez la commande suivante.

mysql> SHOW MASTER STATUS\G

Le résultat devrait être similaire à ce que vous pouvez voir ci-dessous.

Soyez attentif et notez la valeur mysql-bin.000002 et l'ID de position 1643. Ces valeurs seront cruciales lors de la configuration du serveur esclave.

Étape 3 : Configurer le serveur esclave MySQL

Dirigez-vous vers le serveur esclave et comme nous l'avons fait avec le serveur maître, ouvrez le fichier de configuration MySQL.

sudo vim  /etc/mysql/mysql.conf.d/mysqld.cnf

Tout comme le serveur maître, procédez à la modification des lignes suivantes.

bind-address           = 10.128.0.29

Comme auparavant, spécifiez une valeur pour l'attribut server-id dans la section [mysqld]. Cette fois, sélectionnez une valeur différente. Allons-y avec 2.

server-id		=2 

Encore une fois, collez les lignes ci-dessous à la toute fin du fichier de configuration.

log_bin = /var/log/mysql/mysql-bin.log
log_bin_index =/var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index

Redémarrez ensuite le serveur MySQL sur le nœud esclave.

sudo systemctl restart mysql

Une fois terminé, enregistrez et quittez l'éditeur de texte

Ensuite, connectez-vous au shell MySQL comme indiqué.

sudo mysql -u root -p

Dans cette étape, vous devrez effectuer une configuration qui permettra au serveur esclave de se connecter au serveur maître. Mais d’abord, arrêtez les threads esclaves comme indiqué.

mysql> STOP SLAVE; 

Pour permettre au serveur esclave de répliquer le serveur maître, exécutez la commande.

mysql> CHANGE MASTER TO MASTER_HOST ='10.128.0.28', MASTER_USER ='replication_user', MASTER_PASSWORD ='Saturn@1234', MASTER_LOG_FILE = 'mysql-bin.000002', MASTER_LOG_POS = 1643;

Si vous êtes assez enthousiaste, vous remarquerez que nous avons utilisé la valeur mysql-bin.00002 et l'ID de position 1643 affichés précédemment après la création de l'utilisateur de réplication esclave.

De plus, l’adresse IP, l’utilisateur de réplication et le mot de passe du serveur maître ont été utilisés.

Plus tard, démarrez le fil de discussion que vous aviez arrêté précédemment.

mysql> START SLAVE;

Étape 4 : Vérifiez la réplication maître-esclave MySQL

Pour vérifier si l'installation fonctionne effectivement comme prévu, nous allons créer une nouvelle base de données sur le maître et vérifier si elle a été répliquée sur le serveur MySQL Slave.

Connectez-vous à MySQL sur le serveur maître.

sudo mysql -u root -p

Créons une base de données de test. Dans ce cas, nous allons créer une base de données appelée replication_db.

mysql> CREATE DATABASE replication_db;

Maintenant, connectez-vous à votre instance MySQL sur le serveur esclave.

sudo mysql -u root -p

Répertoriez maintenant les bases de données à l'aide de la requête.

mysql> SHOW DATABASES;

Vous remarquerez que la base de données que vous avez créée sur le maître a été répliquée sur l'esclave. Génial ! Votre réplication MySQL maître-esclave fonctionne comme prévu ! Vous pouvez désormais être assuré qu'en cas de panne, des copies des fichiers de base de données seront répliquées sur le serveur esclave.

Conclusion

Dans ce guide, vous avez appris à configurer une configuration de réplication MySQL maître-esclave sur Ubuntu 18.04.