Réplication MySQL

Forum d'assistance et d'échange sur l'installation, la configuration, et l'utilisation des système Linux et BSD. Vous pouvez y poster vos questions concernant ces systèmes d'exploitation en faisant l'effort préalable de rechercher dans le forum, dans les manuels et les documentations que la réponse n'y figure pas.

Modérateur: modos Ixus

Réplication MySQL

Messagepar Emerick » 15 Juin 2004 14:45

Salut, ne sachant pas vraiment où poster, je poste donc ici.

Alors voilà, je dois mettre en place une réplication d'un serveur MySQL vers un autre toutes les heures.
J'ai épluché la doc MySQL, j'ai suivi leur exemple, et j'ai un problème lors de la connexion du serveur 'slave' sur le serveur 'master'.

J'ai ensuite étudiée une autre documentation, et le problème est identique.

Je précise que pour les tests, les deux serveurs MySQL sont sur la meme machine avec des ports d'écoute différents.

Si quelqu'un a une doc à me fournir, ou peut m'expliquer ce qu'il ne va pas, ça serait cool :)

En fait, quand je fait un LOAD DATA FROM MASTER, sur le maitre, je reçois une erreur comme quoi l'utilisateur n'a pas les droits nécessaires, pourtant j'ai donné les droits suivants au compte utilisateur, ce qui semblait suffisant selon la doc : REPLICATION SLAVE, FILE, RELOAD, SUPER.

Des idées ?
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar Roswell1947 » 15 Juin 2004 17:01

tu devrais ajouter les droits suivant:

UPDATE, INSERT, DELETE, eventuellement ALTER, DROP, CREATE.

C'est juste une simple supposition.

Sinon donne lui tout les droits, comme ca tu peut voir si il sagit bien d'un problème de droits.
Il vaut mieux mobiliser son intelligence sur des $%#&!,
que mobiliser sa $%#&! sur des choses intelligentes.
Avatar de l’utilisateur
Roswell1947
Major
Major
 
Messages: 76
Inscrit le: 10 Avr 2004 17:51
Localisation: Metz-Luxembourg

Messagepar Emerick » 15 Juin 2004 20:19

Roswell1947 a écrit:tu devrais ajouter les droits suivant:

UPDATE, INSERT, DELETE, eventuellement ALTER, DROP, CREATE.

C'est juste une simple supposition.

Sinon donne lui tout les droits, comme ca tu peut voir si il sagit bien d'un problème de droits.


Bien tenté, j'ai déjà essayé en lui donnant tous les droits, et ça fait pareil.
J'arrive à me demander si ça marche réellement comme truc :lol:
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar Franck78 » 15 Juin 2004 20:40

Règle essentielle quand tu reçois un message d'erreur: ne pas vraiment croire ce qu'il dit à la lettre. C'est un général le résultat d'une série
d'évènements et tu ne reçois pas l'explication de la cause initiale.

Et je l'ai vérifiée très souvent cette règle!

Bon ca ne t'aide pas vraiment, d'accord, cependant élargi ton domaine d'investiguations !


Bye
Franck
L'art de poser une question sur ce site afin d'obtenir la réponse
A LIRE
Avatar de l’utilisateur
Franck78
Amiral
Amiral
 
Messages: 5625
Inscrit le: 20 Fév 2004 01:00
Localisation: Paris

Messagepar swapfiles » 15 Juin 2004 23:30

'lut.

Peut-tu nous détailler ta config et aussi ton my.cnf?

@++
je lui ais dis que tu m'avais dis qu'il s'était dit qu'on lui dirait!!!
Avatar de l’utilisateur
swapfiles
Vice-Amiral
Vice-Amiral
 
Messages: 791
Inscrit le: 16 Mai 2003 00:00
Localisation: Bordeaux

Messagepar Emerick » 16 Juin 2004 09:31

swapfiles a écrit:'lut.

Peut-tu nous détailler ta config et aussi ton my.cnf?

@++


Je fais ça de ce pas, je voulais sonder le terrain avant pour voir, s'il y avait qq'un succeptible de m'aider.
Donc, pour le moment je fais les tests sur un poste client Windows 2000, les deux serveurs s'éxécutent sur la même machine avec des ports différents, et un répertoire data différent, logique.

Quand ça sera en prod, le serveur MySQL 'master' sera sur un serveur avec une Mandrake ProsSuite9.2, le serveur MySQL 'slave' sera sur un autre serveur sous Linux qui fera tourner aussi Apache, pour ce qui est de la distrib j'ai pas encore choisi.

Pour les versions de MySQL à utiliser je sais pas trop, je voudrai utiliser une release, là j'utilise la version 4.0.20.

my_master.cnf
Code: Tout sélectionner
# The MySQL server
[mysqld]
skip-innodb
bind-address=127.0.0.1
port=3306
#socket=MySQL
skip-locking
set-variable   = key_buffer=16K
set-variable   = max_allowed_packet=1M
set-variable   = thread_stack=64K
set-variable   = table_cache=4
set-variable   = sort_buffer=64K
set-variable   = net_buffer_length=2K
server-id   = 1

# Uncomment the following if you want to log updates
log-bin

# Uncomment the following rows if you move the MySQL distribution to another
# location
basedir = C:/mysql/
datadir = C:/mysqldata/master/


my_slave.cnf
Code: Tout sélectionner
# The MySQL server
[mysqld]
skip-innodb
bind-address=127.0.0.1
port=3307
#socket=MySQL
skip-locking
set-variable   = key_buffer=16K
set-variable   = max_allowed_packet=1M
set-variable   = thread_stack=64K
set-variable   = table_cache=4
set-variable   = sort_buffer=64K
set-variable   = net_buffer_length=2K
master-host   = localhost
master-user   = replicate
master-password   = mdp
master-port   = 3306
server-id   = 2

# Uncomment the following if you want to log updates
#log-bin

# Uncomment the following rows if you move the MySQL distribution to another
# location
basedir = C:/mysql/
datadir = C:/mysqldata/slave/


Je lances les processus en faisant
Code: Tout sélectionner
mysqld --defaults-file=C:\mysql\my_master.cnf
mysqld --defaults-file=C:\mysql\my_slave.cnf
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar Emerick » 16 Juin 2004 11:29

:up:

S'il y a quelqu'un qui touche sa bille en MySQL, je l'appelle [-o< :lol:
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar swapfiles » 16 Juin 2004 12:06

Bon déjà je ne sais pas si le fait de faire la config sur une même machine ne fous pas le bazar.

Ensuite, pour ton user.

Assure toi qu'il ait les droits.

GRANT FILE ON *.* TO
"USER"@SLAVE IDENTIFIED BY " Motdepasse"

Que dit show slave start??
je lui ais dis que tu m'avais dis qu'il s'était dit qu'on lui dirait!!!
Avatar de l’utilisateur
swapfiles
Vice-Amiral
Vice-Amiral
 
Messages: 791
Inscrit le: 16 Mai 2003 00:00
Localisation: Bordeaux

Messagepar Emerick » 16 Juin 2004 12:13

swapfiles a écrit:Bon déjà je ne sais pas si le fait de faire la config sur une même machine ne fous pas le bazar.

Ensuite, pour ton user.

Assure toi qu'il ait les droits.

GRANT FILE ON *.* TO
"USER"@SLAVE IDENTIFIED BY " Motdepasse"

Que dit show slave start??


J'ai meme testé en faisant un GRANT ALL, toujours pareil
ben show slave start me dit que les deux threads, SQL et IO sont lancés, mais dès que je fais un LOAD DATA FROM MASTER, là ça me les kille.

Si tu as msn, tu peux me rejoindre dans l'aprem, pke là j'ai vraiment besoin d'un ptit coup de main. Merci
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar Roswell1947 » 16 Juin 2004 13:54

swapfiles ne parle pas des droit proprement dit, lui il parle de l'hôte.

En fait MySQL va dans un premier temps voir si le login existe, ensuite il va vérifier le password, et après ca il va vérifier l'hôte.

donc l'hôte se trouve après @ quand tu créer un utilisateur.
il propose de mettre slave.

Ou sinon % permet de valider tout les hôte.
Il vaut mieux mobiliser son intelligence sur des $%#&!,
que mobiliser sa $%#&! sur des choses intelligentes.
Avatar de l’utilisateur
Roswell1947
Major
Major
 
Messages: 76
Inscrit le: 10 Avr 2004 17:51
Localisation: Metz-Luxembourg

Messagepar Emerick » 16 Juin 2004 14:01

Roswell1947 a écrit:swapfiles ne parle pas des droit proprement dit, lui il parle de l'hôte.

En fait MySQL va dans un premier temps voir si le login existe, ensuite il va vérifier le password, et après ca il va vérifier l'hôte.

donc l'hôte se trouve après @ quand tu créer un utilisateur.
il propose de mettre slave.

Ou sinon % permet de valider tout les hôte.


C'est ce que j'avais fait, j'avais mis GRANT ..... replicate@"%"
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar Emerick » 16 Juin 2004 14:31

Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Messagepar swapfiles » 16 Juin 2004 17:25

Désolé mais je n'ai pas msn.

Tu as mis les droits super, reload sur le maitre et select sur toutes les tables du maitre, c'est bien çà?

Sur le slave, le user a les droits de création et d'éffacement?

@++
je lui ais dis que tu m'avais dis qu'il s'était dit qu'on lui dirait!!!
Avatar de l’utilisateur
swapfiles
Vice-Amiral
Vice-Amiral
 
Messages: 791
Inscrit le: 16 Mai 2003 00:00
Localisation: Bordeaux

Messagepar drikcT » 17 Juin 2004 18:27

La réplication de données sous MySQL est automatique: il n'y a pas besoin de faire des synchronisation à la main.

Il faut cependant au tout début, copier les données à la main pour qu'elles possèdent une référence. As tu bien copier les données (avec un tar ou un mysqldump)?
drikcT
Major
Major
 
Messages: 76
Inscrit le: 14 Mai 2004 09:38

Messagepar Emerick » 22 Juin 2004 11:03

J'ai trouvé la cause de mon erreur, lors de la copie des données, je ne lockait pas les tables, d'où une inconsistance des données.

Le lien entre serveur maitre et esclave ne doit pas être permanent,e je devrai donc lancer slave start, et slave stop par Cron, non ?
Dans ce cas, comment vérifier que les données ont été mises à jour ?
avec une requete show slave status ?
Image

Il y a des jours où il ne faut pas m'énerver.
Et il y a des jours tous les jours. :-D
Avatar de l’utilisateur
Emerick
Capitaine de vaisseau
Capitaine de vaisseau
 
Messages: 338
Inscrit le: 07 Sep 2003 00:00
Localisation: Bordeaux

Suivant

Retour vers Linux et BSD (forum généraliste)

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité