Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/06/2007, 17h03   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Par défaut Difficultés avec réplication MySQL 5 Linux

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 :

Code :
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 :

Code :
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.
Code :
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

Code :
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
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2007, 17h44   #2
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Je me réponds, avec la grosse déception d'avoir écrit un joli post qui ne sert à rien

En insérant un grand nombre de lignes avec un script sur le serveur maître, la synchronisation se passe sans soucis sur l'esclave...

Il y a une chose que je ne comprends pas: pourquoi l'insertion manuelle de quelques lignes sur le maître ne fait pas varier la position du binlog et du coup il n'y a pas de mise à jour côté esclave ?

Quelqu'un aurait la réponse à cette problématique ?
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2007, 15h36   #3
Membre Expert
 
Avatar de Sivrît
 
Inscription : février 2006
Messages : 953
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2006
Messages : 953
Points : 1 189
Points : 1 189
La version de l'esclave est inférieure à celle du maître. Je ne dit pas que ça pause nécessairement problème, mais c'est déconseillé. Il faut au moins une version plus récente pour l'esclave et idéalement la même.

Normalement toute requête devrait arriver dans le log. Est-ce en transactionnel (par exemple sans autocommit) ?

MySQL arrive avec "mysqlbinlog" qui permet de rendre un log binaire plus lisible. Tu pourrais vérifier si le log est bien à jour est confirmer que c'est un problème de transmission à l'esclave.
Sivrît est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/07/2009, 13h11   #4
Invité régulier
 
Inscription : juillet 2009
Messages : 8
Détails du profil
Informations forums :
Inscription : juillet 2009
Messages : 8
Points : 6
Points : 6
Citation:
Envoyé par ctobini Voir le message
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 :

Code :
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 :

Code :
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.
Code :
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

Code :
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
salut
j'ai eu à utiliser rigoureusment cette méthode avec deux serveurs mysql identiques sauf que:
-lorque je regarde la processlist du côté de l'esclave j'ai pas le message "waiting for master to send event" à la place j'ai NULL mais j'ai bien l'autre message "Has read....."
avec une erreur "no query specified"
-les modifications faites sur le serveur maitre ne sont pas repercutées sur le serveur esclave même en utilisant un script sql d'enregistrements

du coup je ne sais pas trop où est le problème?
si quelqu'un peu m'aider....
noopse est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h20.


 
 
 
 
Partenaires

Hébergement Web