GNU/Linux >> Tutoriels Linux >  >> Linux

Comment configurer une base de données esclave MySQL

MySQL Replication permet à plusieurs copies de la même base de données d'être sur plusieurs serveurs en même temps, en copiant automatiquement les données du serveur principal vers le serveur "esclave".

Grâce à ce mécanisme, toutes les instructions exécutées sur le maître, qui modifient d'une manière ou d'une autre les données, peuvent être enregistrées, transmises et exécutées sur les bases de données répliquées.

Ce guide vous aidera à installer MySQL sur votre serveur, à configurer correctement une réplique et à vérifier son fonctionnement avec des données de test.

Tout d'abord, connectez-vous à votre serveur via une connexion SSH. Si vous ne l'avez pas encore fait, il est recommandé de suivre notre guide pour vous connecter en toute sécurité avec le protocole SSH. Dans le cas d'un serveur local, passez à l'étape suivante et ouvrez votre terminal serveur.

Installation MySQL

Pour configurer la réplication Maître/Esclave sur les deux serveurs, installez une version de MySQL, puis exécutez la procédure d'installation suivante sur les deux machines, avant de passer au chapitre suivant.

Mettez à jour les référentiels de distribution pour vous assurer de télécharger la version la plus récente de MySQL :

$ sudo apt update

Si vous avez déjà lancé cette commande auparavant, passez à l'étape suivante.

Procédez maintenant à l'installation de MySQL :

$ sudo apt install mysql-server

Pour vous assurer que l'installation a réussi, vérifiez la version de MySQL :

$ mysqld --version

Si la procédure a été effectuée avec succès, la version de MySQL installée sera imprimée à l'écran.

Procédez à la sécurisation de MySQL en exécutant un script inclus dans MySQL, qui augmentera la sécurité et limitera l'accès à vos bases de données :

$ sudo mysql_secure_installation

À ce stade, une procédure guidée vous guidera à travers la configuration du niveau de sécurité MySQL.

Tout d'abord, il vous sera demandé si vous souhaitez activer le système de validation de mot de passe. Si activé, lors de la définition du mot de passe d'un utilisateur, le mot de passe est évalué et s'il ne répond pas aux critères de sécurité, il est rejeté avec une erreur.

Plus tard, il vous sera demandé si vous souhaitez changer le mot de passe root avec celui de votre choix (si vous activez le système de validation de mot de passe, un mot de passe qui répond aux critères de sécurité doit être saisi).

Il est recommandé de suivre plusieurs bonnes pratiques pour créer un mot de passe sécurisé. Cela inclut :

  • l'utilisation de lettres majuscules et minuscules

  • l'utilisation de lettres et de chiffres

  • l'utilisation de caractères non alphanumériques comme @ # $% ˆ & !

  • l'utilisation de mots de passe qui n'ont jamais été utilisés auparavant.

Enfin, choisissez de supprimer les utilisateurs anonymes, de tester les bases de données et de désactiver la connexion à distance avec l'utilisateur root. Pour un niveau de sécurité adéquat, il est recommandé de confirmer tous ces changements.

À ce stade, confirmez les mises à jour du tableau des autorisations affiché pour appliquer tous les nouveaux critères de sécurité.

Redémarrez enfin le service pour appliquer les modifications :

$ sudo service mysql restart

Configuration de la réplication Maître/Esclave

Après l'installation sur les deux serveurs (maître et esclave), commencez par configurer le serveur maître.

Tout d'abord, modifiez le fichier de configuration dans /etc/mysql/mysql.conf.d/mysqld.cnf comme suit :

server-id               = 1
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Étant donné que le serveur Esclave devra nécessairement se connecter à distance au serveur Maître, vous devez vous assurer que le service MySQL peut accepter les connexions externes, en changeant l'adresse de liaison comme suit :

bind-address            = 0.0.0.0

Une fois terminé, redémarrez le service pour appliquer les modifications :

$ sudo service mysql restart

A des fins de démonstration et d'évaluation, créez une base de données de test sur le serveur maître (appelée ici "tutoriel") avec une table nommée "nombres" avec des données fictives. Après avoir terminé la procédure de configuration, vérifiez si toutes les données saisies ici sont synchronisées avec le serveur esclave :

$ sudo mysql -u root -p
mysql> CREATE DATABASE tutorial;
	Query OK, 1 row affected (0.00 sec)
	
	mysql> USE tutorial;
	Database changed
	
	mysql> CREATE TABLE numbers ( value REAL );
	Query OK, 0 rows affected (0.09 sec)
	
	mysql> INSERT INTO numbers VALUES ( 1 ), ( 2 ), ( 3 );
	Query OK, 3 rows affected (0.04 sec)
	
	Records: 3  Duplicates: 0  Warnings: 0

Assurez-vous donc que les valeurs que vous venez de saisir sont présentes dans la table de test :

mysql> SELECT * FROM numbers;
		
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	+-------+
	3 rows in set (0.00 sec)

Le tableau des nombres doit contenir 3 exemples de lignes comme indiqué ci-dessus.

Procédez ensuite en créant les données d'accès de l'utilisateur à utiliser par la base de données Esclave :

mysql> GRANT REPLICATION SLAVE ON *.* TO 'usr_replica'@'%' IDENTIFIED BY 'SMDipmf#23$42';
	mysql> FLUSH PRIVILEGES;

Avant de poursuivre la configuration du serveur Esclave, l'état actuel du Maître sera imprimé à l'écran et les informations suivantes seront enregistrées :

mysql> SHOW MASTER STATUS;
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	| mysql-bin.000001 |     1238 | |               | |
	
	+------------------+----------+--------------+------------------+-------------------+
	
	1 row in set (0.00 sec)

Vous aurez besoin de ces données lors de la configuration du serveur esclave.

Continuez à quitter le shell MySQL :

mysql> exit
	Bye

Ensuite, enregistrez un vidage complet de la base de données pour le charger ultérieurement sur le serveur esclave :

$ sudo mysqldump -u root -p --opt tutorial > slave-init.sql
	Enter password:

Transférez le fichier nouvellement créé sur la machine esclave et procédez à sa configuration en modifiant le fichier /etc/mysql/mysql.conf.d/mysqld.cnf :

server-id               = 2
	
	log_bin                 = /var/log/mysql/mysql-bin.log
	
	expire_logs_days        = 10
	
	max_binlog_size   = 100M

Veuillez noter que l'identifiant du serveur a été modifié en utilisant le numéro 2 et n'oubliez pas de modifier l'adresse de liaison comme indiqué ici :

bind-address            = 0.0.0.0

Maintenant, redémarrez l'esclave pour appliquer les modifications :

$ sudo service mysql restart

Procédez maintenant en créant une base de données avec le même nom que le serveur maître :

$ sudo mysql -u root -p

	mysql> create database tutorial;
	
	Query OK, 1 row affected (0.00 sec)
	mysql> exit
	
	Bye

Importez maintenant la sauvegarde nouvellement créée et démarrez l'esclave en utilisant les informations précédemment enregistrées par la base de données maître (MASTER_LOG_FILE et MASTER_LOG_POS) :

$ sudo mysql -u root tutorial < /root/slave.sql
	$ sudo mysql -u root -p 
	mysql> CHANGE MASTER TO MASTER_HOST='195.231.4.201', MASTER_USER='usr_replica', MASTER_PASSWORD='SMDipmf#23$42', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 1238;
	
	Query OK, 0 rows affected, 2 warnings (0.10 sec)
	mysql> START SLAVE;
	
	Query OK, 0 rows affected (0.00 sec)

A partir de ce moment, les bases de données sont synchronisées en temps réel et vous pouvez quitter le shell MySQL.

Vérification du bon fonctionnement de la réplication

Pour vérifier le fonctionnement de la réplication vous pouvez essayer d'insérer des données dans la base Maître et vérifier si elles arrivent correctement dans la base Esclave. Commencez par saisir de nouvelles données sur le Master comme suit :

$ sudo mysql -u root -p
mysql> use tutorial;
	Reading table information for completion of table and column names 
	Turn off this feature to get a quicker startup with -A   
	Database changed 
	
	mysql> INSERT INTO numbers VALUES ( 4 ) , ( 5 );
	
	Query OK, 2 rows affected (0.03 sec)
	Records: 2 
	Duplicates: 0 
	Warnings: 0

Procédez ensuite en interrogeant la base de données Esclave :

$ sudo mysql -u root -p

	mysql> use tutorial;
	
	Reading table information for completion of table and column names
	
	Turn off this feature to get a quicker startup with -A
	  changed
	
	mysql> SELECT * FROM numbers;
	
	+-------+
	| value |
	+-------+
	|     1 |
	|     2 |
	|     3 |
	|     4 |
	|     5 |
	+-------+
	
	5 rows in set (0.00 sec)

Comme vous pouvez le voir, les nouvelles valeurs (4 et 5) sont arrivées sur la base de données Slave, donc la synchronisation fonctionne correctement.


Linux
  1. Comment configurer un serveur Web Apache

  2. Comment installer le serveur de base de données MySQL 8 sur CentOS 8

  3. Comment créer une base de données dans MySQL avec MySQL Workbench

  4. Comment installer le serveur de base de données MySQL sur CentOS

  5. Comment autoriser la connexion à distance au serveur de base de données MySQL

Comment sauvegarder une base de données WordPress via MySQL

Comment autoriser l'accès à distance au serveur de base de données MySQL

Serveur de base de données MySQL

Comment créer une base de données dans MySQL

Comment configurer NGINX sur un serveur CentOS 7

Comment installer et configurer un serveur de base de données sur Jelastic Cloud