Bonjour,
Je tente de créer un système de réplication MySQL avec :
- un serveur maître MySQL 5.0.22 sur une Ubuntu Dapper Drake Server
- un serveur esclave MySQL 5.0.21 sur une Ubuntu Dapper Drake Server
Chaque serveur tourne sur une machine virtuelle VMWare, l'OS hôte est également une Ubuntu (Feisty Fawn, 7.04).
J'utilise le livre 'MySQL 5 guide de l'administrateur et du développeur' chez Eyrolles. La manip se situe sur les pages 402 à 410.
Mes manips :
Côté maître (IP: 172.16.219.155) :
1.
Modification fichier /etc/mysql/my.cnf pour ouverture vers extérieur et id unique
# bind-address = 127.0.0.1
log_bin = /var/log/mysql/mysqlmasteur-bin.log
server-id = 1
binlog_ignore_db = mysql # je ne veux pas répliquer la base mysql
Reboot du serveur MySQL maître
2.
Creation d'une base d'essai sur le maître :
3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE DATABASE essai; use essai; CREATE TABLE e (chaine TEXT); INSERT INTO essai.e VALUES ('a');
creation d'un utilisateur pour l'esclave :
Résultat du SHOW MASTER STATUS :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 GRANT REPLICATION SLAVE, SELECT, RELOAD, SUPER ON *.* TO 'replicuser'@'%' identified by 'replicuser'; FLUSH PRIVILEGES; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
4.
Puis une sauvegarde de toutes les bases :
mysqldump -u root -p --all-databases --master-data --single-transaction > dump
Et reboot du serveur MySQL maître
Un coup d'oeil sur la processlist :
Côté esclave (172.16.219.156) :
Tentative d'ouverture de session avec le compte 'replicuser' sur le serveur MySQL maître OK, rien à voir avec la réplication, c'est juste un essai.
1.
Modification fichier /etc/mysql/my.cnf pour ouverture vers extérieur et id unique
# bind-address = 127.0.0.1 (communication avec exterieur)
server-id = 2
Reboot du serveur MySQL esclave
2.
J'injecte le dump dans ma base :
mysql -u root -p < dump
3.
4.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 CHANGE MASTER TO MASTER_HOST = '172.16.219.155', MASTER_USER = 'replicuser', MASTER_PASSWORD = 'replicuser', MASTER_LOG_FILE = 'mysqlmaster-bin.000003', MASTER_LOG_POS = 98 ;
START SLAVE;
Là je regarde la processlist :
5.
J'insert des données dans ma base essai
Et là rien de chez rien côté esclave, pas de mise à jour...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO essai.e VALUES ('b'); INSERT INTO essai.e VALUES ('c');![]()
J'ai refait plusieurs tentatives (en reprenant du début et en effectuant un RESET SLAVE après avoir réinjecté le nouveau dump du maître) mais ça ne fonctionne pas.
A noter que je n'ai pas d'autres messages d'état que ceux que j'ai mis en exemple pour les processlist maître et esclave (excepté un changement d'ID des messages) et qu'en insérant des données dans les tables du serveur maître le log binaire ne change pas, sauf en cas de reboot ou le numéro de fichier s'incrémente et la position reste à 98.
Auriez-vous une expérience/avis sur ce problème ?
En vous remerciant,
C. Tobini
Partager