GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Réplication maître-esclave MySQL 8 sur Ubuntu 20.04

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.


Ubuntu
  1. Comment installer MySQL 8.0 dans Ubuntu 18.04

  2. Comment installer MySQL sur Ubuntu 20.04

  3. Installation d'Ubuntu 22.04 LAMP

  4. Comment installer MySQL sur Ubuntu 18.04

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

Comment installer le serveur MySQL dans Ubuntu

Comment installer MySQL 8.0 sur Ubuntu 18.04

Comment installer Lychee sur Ubuntu 14.04

Installer MYSQL Workbench sur Ubuntu 22.04

Comment configurer la réplication maître-esclave MySQL sur RHEL 7 ?

Comment installer MySQL sur Ubuntu 22.04