GNU/Linux >> Tutoriels Linux >  >> Linux

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

Le concept de réplication de base de données garantit que les données sont copiées sur plusieurs serveurs à partir d'un serveur maître. Cela assure la redondance des données et garantit que les données ne sont pas perdues en cas de défaillance du nœud maître. Dans cet article, nous examinons la réplication maître-esclave MariaDB sur CentOS 7. Nous allons montrer comment les données peuvent être copiées d'une base de données située sur un nœud maître vers une autre base de données située sur un système esclave.

Scénario de réplication maître-esclave MariaDB

Voici la configuration de la réplication :



Master node (CentOS 7 64 bit) : IP 173.82.2.236

Slave node: (CentOS 7 64 bit) : IP 173.82.94.57

Étape 1 :Installez MariaDB sur les nœuds maître et esclave

Pour commencer, connectez-vous aux nœuds maître et esclave et exécutez les commandes suivantes pour installer le serveur MariaDB

yum install mariadb-server mariadb

Exemple de sortie

Démarrez le service MariaDB et activez-le au démarrage



# systemctl start mariadb
# systemctl enable mariadb

Exemple de sortie

Étape 2 :Définissez le mot de passe MariaDB sur le maître et l'esclave

Par défaut, le mot de passe pour MariaDB/MySQL est généralement vide et les utilisateurs non autorisés peuvent accéder à la base de données. Nous devons le sécuriser en configurant un mot de passe et en le renforçant avec quelques autres paramètres. Pour ce faire, exécutez la commande ci-dessous sur le nœud maître et le nœud esclave

mysql_secure_installation

Exemple de sortie

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y ## Enter Y and press Enter
New password:   ## Enter new password
Re-enter new password:  ## Enter password again
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  ## Enter Y and press Enter
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y  ## Enter Y and press Enter
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y  ## Enter Y and press Enter
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Étape 3 :Configuration du nœud maître

Maintenant que nous avons renforcé nos instances MariaDB sur les deux nœuds, configurons le nœud maître.

Tout d'abord, nous devons autoriser le port 3306 de MariaDB à travers le pare-feu CentOS 7. Pour ce faire, exécutez les commandes

# firewall-cmd --add-port=3306/tcp --zone=public --permanent

Exemple de sortie

Le rechargement du pare-feu pour effectuer les modifications

# firewall-cmd --relaod

Exemple de sortie

Ensuite, apportez quelques modifications au /etc/my.cnf fichier

vim /etc/my.cnf

ajoutez les lignes suivantes dans le [mysqld] rubrique



[mysqld]
server_id=1
log-basename=master
log-bin
binlog-format=row
binlog-do-db=replica_db
[...]

Ici, replica_db est la base de données que nous allons créer et la répliquer sur l'esclave.

Ensuite, redémarrez le service MariaDB à l'aide de la commande :

systemctl restart mariadb

Nous allons maintenant nous connecter à MariaDB en tant qu'utilisateur root :

mysql -u root -p

La prochaine étape consistera à créer la replica_db base de données

MariaDB [(none)]> CREATE DATABASE replica_db;

Ensuite, créez un utilisateur et un mot de passe esclave. Par exemple, nous utiliserons slave_user comme nom d'utilisateur esclave et P@ssword100 comme mot de passe :


MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'P@ssword100';
Query OK, 0 rows affected (0.00 sec)

Ensuite, supprimez les privilèges comme indiqué


MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH TABLES WITH READ LOCK;
Query OK, 0 rows affected (0.00 sec)

Ensuite, exécutez la commande ci-dessous pour afficher l'état du maître

SHOW MASTER STATUS;

Étape 4 :Sauvegarder la base de données sur le serveur maître et la transférer sur l'esclave

Ensuite, exécutez la commande ci-dessous pour sauvegarder toutes les bases de données maîtres

 # mysqldump --all-databases --user=root --password --master-data > masterdatabase.sql

Cela crée un fichier appelé masterdatabase.sql dans votre répertoire de travail actuel.

Connectez-vous à nouveau à MySQL en tant qu'utilisateur root :

mysql -u root -p

Et déverrouillez les tables :



MariaDB [(none)]> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> quit
Bye

Copiez maintenant le fichier masterdatabase.sql fichier sur votre serveur esclave.

La commande sera donc :

scp masterdatabase.sql [email protected]:/home

N'oubliez pas que 173.82.94.57 est notre serveur esclave MariaDB.

Étape 4 :Configuration de l'esclave MariaDB

Il est maintenant temps de configurer le nœud MariaDB Slave

Editez le fichier /etc/my.cnf fichier

vim /etc/my.cnf

Ajoutez les entrées suivantes sous [mysqld] section comme indiqué

 
[mysqld]
server-id = 2
replicate-do-db=replica_db
[...]

Ici, replica_db est la base de données créée sur le nœud du serveur maître. Veillez également à utiliser un ID de serveur différent pour les serveurs maître et esclave. Dans ce cas, l'identifiant du serveur est 2

Enregistrez et quittez le fichier.

Ensuite, nous allons importer la base de données maître comme indiqué

mysql -u root -p < /home/masterdatabase.sql 

Gardez à l'esprit que nous avions déjà copié le fichier masterdatabase.sql du serveur maître vers le répertoire /home/ du serveur esclave.

Redémarrez le service MariaDB pour appliquer les modifications.

systemctl restart mariadb

Connectez-vous maintenant à MariaDB en tant qu'utilisateur root

mysql -u root -p

Arrêtez l'esclave. Indiquez à l'esclave où trouver le fichier journal maître et démarrez l'esclave.


MariaDB [(none)]> STOP SLAVE;

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='173.82.2.236', MASTER_USER='slave_user', MASTER_PASSWORD='P@ssword100', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=473;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> STOP SLAVE;
Query OK, 0 rows affected (0.01 sec)

Ensuite, exécutez la commande ci-dessous pour afficher l'état de l'esclave

MariaDB [(none)]> SHOW SLAVE STATUS\G;

Tester la réplication MariaDB

Côté maître :

Rendez-vous sur votre serveur maître MariaDB et connectez-vous à l'instance MariaDB à l'aide de la commande indiquée

mysql -u root -p

Créer la base de données replica_db

Créez ensuite une table Persons

Ajouter un enregistrement comme indiqué

Enfin, Affichez le tableau

Côté esclave :

Maintenant, connectez-vous à l'instance de base de données MariaDB sur le serveur esclave

mysql -u root -p

Ensuite, affichez les bases de données à l'aide de la commande ci-dessous

SHOW DATABASES;

Comme vous pouvez le voir, le replica_db la base de données est présente, ce qui implique qu'elle a été répliquée !

Continuons et sondons à l'intérieur de la base de données et vérifions si des tables sont présentes. Exécuter

use replica_db;

Alors

show tables;

Comme vous pouvez le voir, le tableau Personnes créé précédemment dans le nœud maître est présent. Parfait !

Révélons ses enregistrements pour être sûr que notre base de données a été entièrement répliquée

select *from replica_db;

Comme observé, tous les contenus ont été reproduits et sont exacts. Bravo !

Dans cet article, vous avez appris comment configurer la réplication maître-esclave MariaDB sur CentOS 7. Essayez-le et n'hésitez pas à donner votre avis.


Linux
  1. Comment réinitialiser le mot de passe racine MySQL ou MariaDB

  2. Mutt :comment stocker un mot de passe en toute sécurité ?

  3. Comment configurer VSFTPD sur CentOS 8

  4. Comment configurer WireGuard VPN sur CentOS 8

  5. Comment installer MySQL sur CentOS 7.x ?

Comment configurer un serveur TeamSpeak sur CentOS 7

Comment configurer un serveur Minecraft sur CentOS 7

Comment configurer GitLab sur CentOS 8

Comment réinitialiser le mot de passe root MySQL 8.0 sur Centos 7.x ?

Comment gérer les boîtes aux lettres avec RoundCube sur CentOS 7

Comment réinitialiser le mot de passe racine dans CentOS/RHEL 8