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 :
1 2 3 4
| CREATE DATABASE essai;
use essai;
CREATE TABLE e (chaine TEXT);
INSERT INTO essai.e VALUES ('a'); |
3.
creation d'un utilisateur pour l'esclave :
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; |
Résultat du 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.
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
; |
4.
START SLAVE;
Là je regarde la processlist :
5.
J'insert des données dans ma base essai
1 2
| INSERT INTO essai.e VALUES ('b');
INSERT INTO essai.e VALUES ('c'); |
Et là rien de chez rien côté esclave, pas de mise à jour...
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