Parfois, nous pouvons avoir besoin de répliquer automatiquement les données d'un serveur de base de données MySQL vers un ou plusieurs serveurs de base de données MySQL. Fondamentalement, les administrateurs de base de données effectuent des tâches liées à la base de données telles que la réplication, la mise en cluster et le basculement automatique. La gestion des serveurs de bases de données MySQL et l'exécution des tâches de réplication relèvent de la responsabilité des experts en bases de données. Dans cet article, nous allons apprendre à configurer la réplication de base de données MySQL maître-esclave dans Ubuntu 20.04. Dans cet article, nous utiliserons MySQL 8 pour la réplication.
Prérequis
- Deux serveurs Ubuntu
- Compte d'utilisateur root privilégié
- Connexion Internet pour télécharger les packages
Dans cet exemple, les serveurs suivants sont utilisés.
- Maître – 192.168.178.135
- Esclave – 192.168.178.137
Installer le serveur MySQL 8 sur les deux nœuds
L'installation de MySQL est un processus simple et direct. Dans le système Ubuntu, MySQL peut être installé à l'aide du référentiel de packages APT. Avant l'installation, mettez à jour l'index du package Ubuntu à l'aide de la commande suivante.
$apt update
Installez le package de serveur MySQL à l'aide de la commande ci-dessous.
$apt install mysql-server -y
Une nouvelle installation du serveur MySQL le laisse non sécurisé. Exécutez le script "mysql_secure_installation " pour modifier certaines des options par défaut les moins sécurisées telles que les connexions root à distance, la base de données de test, les exemples d'utilisateurs, etc.
$ mysql_secure_installation
Démarrer et activer le service MySQL
$ systemctl start mysql
$ systemctl enable mysql
Configurer le serveur de base de données maître
Nous devons maintenant apporter quelques modifications au serveur maître pour la réplication. Modifiez le mysqld.conf fichier sous le répertoire /etc/mysql/mysql.conf.d et ajoutez les lignes suivantes. N'oubliez pas d'ajouter les variables de configuration sous le [mysqld] rubrique.
$ vi /etc/mysql/mysql.conf.d/mysqld.conf
[mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql log-error = /var/log/mysql/error.log server-id = 1 log-bin = /var/log/mysql/mysql-bin.log tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log=1 slow_query_log_file=/var/lib/mysql/mysqld-slow.log
Où :
- server-id – ID unique du serveur MySQL. Cet ID ne peut être réutilisé dans aucun nœud du cluster.
- log-bin - Il s'agit du fichier dans lequel toutes les informations de réplication sont stockées.
- max_binlog_size – Taille du fichier binlog.
En outre, commentez l'adresse de liaison comme :
#bind-address =127.0.0.1
Redémarrez le service mysql
$systemctl restart mysql
Créer un nouvel utilisateur pour le service de réplication sur le nœud maître
Nous devons maintenant créer un utilisateur de base de données dans un nœud maître qui sera utilisé par les esclaves lors de la connexion. Connectez-vous à la base de données en utilisant l'utilisateur root et créez l'utilisateur.
$ mysql -u root -p
$ mysql> CREATE USER [email protected] IDENTIFIED BY '[email protected]';
Remarque :La spécification de l'adresse IP lors de la création de l'utilisateur n'acceptera les connexions MySQL qu'à partir de l'hôte spécifié. Les connexions d'autres hôtes seront refusées. Dans cet exemple, j'ai utilisé l'adresse IP de mon serveur esclave MySQL. Vous devrez peut-être modifier cette adresse IP dans votre environnement en conséquence.
L'utilisateur a besoin des privilèges REPLICATION SLAVE pour pouvoir répliquer les données MySQL. Utilisez la requête suivante pour accorder les privilèges.
mysql> GRANT REPLICATION SLAVE on *.* to [email protected] ;
Vérifiez les privilèges accordés à l'aide de la requête suivante.
mysql> SHOW GRANTS FOR [email protected];
Configurer le nœud de base de données esclave
Nous avons déjà installé le serveur MySQL à l'étape précédente. Nous allons maintenant modifier certains fichiers de configuration pour activer le processus de réplication. Modifiez le mysqld.conf fichier sous /etc/mysql/mysql.conf.d répertoire et ajoutez le contenu suivant.
$vi /etc/mysql/mysql.conf.d/mysqld.conf
Contenu du fichier de configuration :
[mysqld] log_bin = /var/log/mysql/mysql-bin.log server-id = 2 read_only = 1 tmpdir = /tmp binlog_format = ROW max_binlog_size = 800M sync_binlog = 1 expire-logs-days = 5 slow_query_log = 2
Où,
- identifiant du serveur – ID de serveur MySQL unique.
- lecture_seule – Le nœud esclave est défini sur le mode lecture seule
- log_bin – Active la journalisation binaire dans le nœud esclave
- slow_query_log – Active le journal des requêtes lentes
Mettez également en commentaire la ligne d'adresse de liaison.
# bind-address = 127.0.0.1
Redémarrez maintenant le service MySQL
$ systemctl restart mysql
Connecter le serveur esclave au serveur maître
Avant de configurer le serveur esclave, accédez au serveur maître et vérifiez l'état.
$ mysql -u root -p
mysql> SHOW MASTER STATUS\G
Prenez note des drapeaux suivants que nous utiliserons dans le serveur esclave.
- Fichier :mysql-bin.000002
- Position :156
Configurez maintenant les paramètres du serveur esclave qui seront utilisés pour connecter le serveur maître. Suivez les étapes ci-dessous.
- Connectez-vous au serveur MySQL à l'aide des informations d'identification racine
$ mysql -u root -p
- Arrêter les threads esclaves
mysql> STOP SLAVE;
- Configurer le serveur esclave pour répliquer le serveur maître
mysql> CHANGE MASTER TO MASTER_HOST='192.168.178.137', MASTER_USER='replication_user', MASTER_PASSWORD='[email protected]', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1050;
Où,
- 192.168.178.137 – Adresse IP du serveur maître
- utilisateur_réplication – Utilisateur MySQL du serveur maître
- mot de passe – Mot de passe de l'utilisateur de réplication
- mysql-bin.000002 – Fichier journal du serveur maître
- 156 – Position du journal du serveur maître
Activez maintenant le serveur esclave.
mysql> START SLAVE;
Vérifiez l'état de l'esclave à l'aide de la requête suivante
mysql> SHOW SLAVE STATUS\G
Notez l'état du drapeau suivant.
- Slave_IO_Running :Connexion
- Slave_IO_Running :Connexion
Vérifier la réplication maître-esclave
Le maître et l'esclave sont configurés pour se répliquer. Nous pouvons vérifier si la réplication maître-esclave fonctionne ou non. Dans le serveur maître, connectez-vous au shell MySQL et créez une base de données de test.
$ mysql -u root -p
mysql> CREATE DATABASE example_db;
Vérifiez la base de données créée.
mysql> SHOW DATABASES;
Connectez-vous maintenant au serveur esclave
$ mysql -u root -p
Exécutez la requête suivante pour répertorier les bases de données.
mysql> SHOW DATABASES;
Vous pouvez voir que la base de données créée sur le serveur maître est répliquée sur le serveur esclave.
Conclusion
Dans cet article, nous avons appris à configurer le nœud maître et esclave MySQL sur Ubuntu 20.04. Vous pouvez suivre cet article pour configurer également la réplication MySQL maître-esclave sur Ubuntu 18.04.