Le serveur esclave doit se connecter au maître pour lire le journal binaire. Par mesure de sécurité, il est recommandé de créer un compte utilisateur dédié à cet effet avec des privilèges limités. Dans cette étape, vous allez créer un utilisateur de réplication et peupler la base de données de test pour observer la réplication en action.
-
Connexion au serveur maître :
Ouvrez un shell MySQL à l'intérieur du conteneur mysql-master.
docker exec -it mysql-master mysql -uroot -plab_password
-
Création d'un utilisateur de réplication :
À l'invite mysql>, exécutez la commande suivante pour créer un utilisateur nommé repl_user avec le mot de passe repl_password. Cet utilisateur sera utilisé par l'esclave pour se connecter. Nous utilisons '@'%' pour permettre à l'utilisateur de se connecter depuis n'importe quel hôte, ce qui inclut notre conteneur esclave sur le réseau Docker.
CREATE USER 'repl_user'@'%' IDENTIFIED BY 'repl_password';
-
Octroi des privilèges de réplication :
Le nouvel utilisateur a besoin du privilège REPLICATION SLAVE, qui lui permet de lire les journaux binaires du maître.
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';
Après avoir accordé les privilèges, rechargez les tables de privilèges (grant tables) pour appliquer immédiatement les modifications.
FLUSH PRIVILEGES;
-
Vérification du statut du journal binaire du maître :
Avant de configurer l'esclave, vous devez connaître les coordonnées exactes dans le journal binaire du maître à partir desquelles l'esclave doit commencer la réplication. La commande SHOW MASTER STATUS fournit ces informations.
SHOW MASTER STATUS;
La sortie ressemblera à ceci. Notez les valeurs File et Position, car vous en aurez besoin à l'étape suivante.
+------------------+----------+------------------+--------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+------------------+--------------------+-------------------+
| mysql-bin.000001 | 337 | replication_db | | |
+------------------+----------+------------------+--------------------+-------------------+
1 row in set (0.00 sec)
-
Création d'une table de test et de données :
La base de données replication_db a été créée au démarrage du conteneur. Créons une table et insérons quelques données pour tester la réplication.
USE replication_db;
CREATE TABLE messages (
id INT PRIMARY KEY AUTO_INCREMENT,
content VARCHAR(255)
);
INSERT INTO messages (content) VALUES ('Hello from the master!');
Vous pouvez vérifier que les données ont été insérées correctement.
SELECT * FROM messages;
Vous devriez voir la ligne que vous venez d'insérer.
+----+------------------------+
| id | content |
+----+------------------------+
| 1 | Hello from the master! |
+----+------------------------+
1 row in set (0.00 sec)
Maintenant, quittez le shell MySQL.
exit;
Vous avez maintenant préparé le serveur maître en créant un utilisateur de réplication et des données de test.