GNU/Linux >> Tutoriels Linux >  >> Cent OS

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

La réplication MySQL est un processus qui vous permet de copier automatiquement des données d'un serveur de base de données vers un ou plusieurs serveurs.

MySQL prend en charge un certain nombre de topologies de réplication, la topologie maître/esclave étant l'une des topologies les plus connues dans lesquelles un serveur de base de données agit en tant que maître, tandis qu'un ou plusieurs serveurs agissent en tant qu'esclaves. Par défaut, la réplication est asynchrone où le maître envoie des événements décrivant les modifications de la base de données à son journal binaire et les esclaves demandent les événements lorsqu'ils sont prêts.

Dans ce tutoriel, nous expliquerons comment configurer une réplication MySQL maître/esclave avec un serveur maître et un serveur esclave sur CentOS 7. Les mêmes étapes s'appliquent pour MariaDB.

Ce type de topologie de réplication est le mieux adapté au déploiement d'instances dupliquées en lecture pour la mise à l'échelle en lecture, la sauvegarde des bases de données en direct pour la reprise après sinistre et pour les tâches d'analyse.

Prérequis #

Dans cet exemple, nous supposons que vous disposez de deux serveurs exécutant CentOS 7, qui peuvent communiquer entre eux via un réseau privé. Si votre fournisseur d'hébergement ne fournit pas d'adresses IP privées, vous pouvez utiliser les adresses IP publiques et configurer votre pare-feu pour autoriser le trafic sur le port 3306 uniquement à partir de sources fiables.

Les serveurs de cet exemple ont les adresses IP suivantes :

Master IP: 192.168.121.59
Slave IP:  192.168.121.14

Installer MySQL #

Les référentiels par défaut de CentOS 7 n'incluent pas les packages MySQL, nous allons donc installer MySQL à partir de leur référentiel Yum officiel. Pour éviter tout problème, nous installerons la même version MySQL 5.7 sur les deux serveurs.

Installez MySQL sur les serveurs maître et esclave :

sudo yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpmsudo yum install mysql-community-server

Une fois l'installation terminée, démarrez le service MySQL et activez-le pour qu'il démarre automatiquement au démarrage avec :

sudo systemctl enable mysqldsudo systemctl start mysqld

Lorsque le serveur MySQL démarre pour la première fois, un mot de passe temporaire est généré pour l'utilisateur racine MySQL. Pour trouver le mot de passe, utilisez la commande grep suivante :

sudo grep 'temporary password' /var/log/mysqld.log

Exécutez le mysql_secure_installation commande pour définir votre nouveau mot de passe root et améliorer la sécurité de l'instance MySQL :

mysql_secure_installation

Entrez le mot de passe root temporaire et répondez Y (oui) à toutes les questions.

Le nouveau mot de passe doit comporter au moins 8 caractères et contenir au moins une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial.

Configurer le serveur maître #

Tout d'abord, nous allons configurer le serveur MySQL maître et apporter les modifications suivantes :

  • Configurez le serveur MySQL pour qu'il écoute sur l'adresse IP privée.
  • Définissez un ID de serveur unique.
  • Activer la journalisation binaire.

Pour ce faire, ouvrez le fichier de configuration MySQL et ajoutez les lignes suivantes dans le [mysqld] rubrique :

sudo nano /etc/my.cnf
maître :/etc/my.cnf
bind-address           = 192.168.121.59
server-id              = 1
log_bin                = mysql-bin

Une fois cela fait, redémarrez le service MySQL pour que les modifications prennent effet

sudo systemctl restart mysqld

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

mysql -uroot -p

Depuis l'invite MySQL, exécutez les requêtes SQL suivantes qui créeront le replica utilisateur et accordez l'REPLICATION SLAVE privilège à l'utilisateur :

CREATE USER 'replica'@'192.168.121.14' IDENTIFIED BY 'strong_password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.121.14';
Assurez-vous de changer l'adresse IP avec votre adresse IP esclave. Vous pouvez nommer l'utilisateur comme vous le souhaitez.

Toujours dans l'invite MySQL, exécutez la commande suivante qui imprimera le nom et la position du fichier binaire.

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

Prenez note du nom du fichier, ‘mysql-bin.000001’ et Position ‘1427’ . Vous aurez besoin de ces valeurs lors de la configuration du serveur esclave. Ces valeurs seront probablement différentes sur votre serveur.

Configurer le serveur esclave #

Comme pour le serveur maître ci-dessus, nous apporterons les modifications suivantes au serveur esclave :

  • Configurer le serveur MySQL pour qu'il écoute sur l'adresse IP privée
  • Définissez un ID de serveur unique
  • Activer la journalisation binaire

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

sudo nano /etc/my.cnf
esclave :/etc/my.cnf
bind-address           = 192.168.121.14
server-id              = 2
log_bin                = mysql-bin

Redémarrez le service MySQL :

sudo systemctl restart mysqld

L'étape suivante consiste à configurer les paramètres que le serveur esclave utilisera pour se connecter au serveur maître. Connectez-vous au shell MySQL :

mysql -uroot -p

Tout d'abord, arrêtez les threads esclaves :

STOP SLAVE;

Exécutez la requête suivante qui configurera l'esclave pour répliquer le maître :

CHANGE MASTER TOMASTER_HOST='192.168.121.59',MASTER_USER='replica',MASTER_PASSWORD='strong_password',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=1427;

Assurez-vous que vous utilisez l'adresse IP, le nom d'utilisateur et le mot de passe corrects. Le nom et la position du fichier journal doivent être identiques aux valeurs que vous avez obtenues du serveur maître.

Une fois cela fait, démarrez les threads esclaves.

START SLAVE;

Tester la configuration #

À ce stade, vous devriez avoir une configuration de réplication maître/esclave fonctionnelle.

Pour vérifier que tout fonctionne comme prévu, nous allons créer une nouvelle base de données sur le serveur maître :

mysql -uroot -p
CREATE DATABASE replicatest;

Connectez-vous au shell MySQL esclave :

mysql -uroot -p

Exécutez la commande suivante pour répertorier toutes les bases de données :

SHOW DATABASES;

Vous remarquerez que la base de données que vous avez créée sur le serveur maître est répliquée sur l'esclave :

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| replicatest        |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Cent OS
  1. Comment installer MySQL sur CentOS 7

  2. Comment configurer la configuration MySQL Master-Slave à l'aide des nœuds CentOS 7 ?

  3. Comment configurer OpenSSH sur CentOS 7

  4. Comment configurer la réplication MySQL sur CentOS

  5. Comment installer MySQL 5.6 sur CentOS 6.x

Comment configurer la réplication MariaDB sur CentOS Linux

Comment configurer OpenNMS sur CentOS 7

Comment configurer la réplication MySQL dans RHEL/Centos

Comment configurer la réplication en continu PostgreSQL 12 dans CentOS 8

Comment configurer la réplication MariaDB Master-Slave sur CentOS 7

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