MIse en place
Après avoir écrit cet article je me suis aperçu que le procédé ne fonctionne pas parfaitement ....
notamment si des données existent déjà sur le serveur maître .
Je vous présente donc ma façon de faire , afin de mettre en place une réplication avec un serveur déjà en production .
Note : Pas de différence entre le moteur des tables MyIsam , InnoDb .
Utilisateur de replication
Je vais créer sur le maître un utilisateur , qui aura les droits pour effectuer sa réplication .
mysql -uroot -p******* CREATE USER 'slave_user'@'%' IDENTIFIED BY 'motdepasse'; GRANT REPLICATION SLAVE ON *.* TO slave_user@'%' IDENTIFIED BY 'motdepasse'; FLUSH PRIVILEGES;
Faits attention à ce qu'il n'y ai pas plusieurs utilisateurs du même nom .
Fichiers de conf
Il nous faut faire quelques modifications dans les fichiers de conf des serveurs maître est esclave ... pas de panique , quivez le guide .
Maître
vim /etc/mysql/my.cnf
Dans la section mysqld Il faut juste vérifier à ce que les paramètres suivants soient dé-commentés.
server-id = 1 log_bin = /var/log/mysql/mysql-bin.log
Server-id se doit d'être unique , sur l'esclave , nous mettrons donc 2
Par contre , commentez le paramètre suivant:
#bind-adress = 127.0.0.1
Sans quoi les connexions extérieures n'aboutirons pas .
Esclave
vim /etc/mysql/my.cnf
Dans la section mysqld Il faut juste vérifier à ce que les paramètres suivants soient dé-commentés et configurés.
server-id = 2 master-host=ipservmaitre master-user=slave_user master-password=****** master-port=3306
Par contre , commentez le paramètre suivant:
#bind-adress = 127.0.0.1
Sans quoi les connexions extérieures n'aboutirons pas .
Ensuite , Commençons par couper les services qui écrivent sur les bases
Sur le maître et l'esclave :
Dans mon cas , je n'ai eu qu'à couper apache et cron
/etc/init.d/apache2 stop /etc/init.d/cron stop
Sur le maître
Le principe est le suivant :
- RESET des logs binaires
- Visualisation de la position
- Dump
- Envoie du dump ver l'esclave
1 RESET des logs 2:Position
Connectons nous à mysql:
mysql -uroot -p******* RESET MASTER; SHOW MASTER STATUS; exit
Ce qui doit donner :

Il vous faut noter précieusement le nom du fichier binaire , et la position ici par exemple :
- mysql-bin.000001
- 13860
3 Dump des bases du maître
Dans mon cas , je vais repliquer l'ensemble des bases de mon serveur maître, j'utilise donc la commande suivante :
mysqldump -uroot -p******* --databases databaseA databaseB databaseC >/root/dump.sql
Note: je n'ai pas utilisé --all-databases , pour la simple raison , que cela produit un conflit avec la base information_schema et mysql , j'ai donc sélectionné toutes mes bases .
4: Envoie du dump vers le serveur esclave
Bon , juste pour rappel hein ...
scp /root/dump.sql adminservEsclave@ipservesclave:/home/adminservEsclave/dump.sql
Voilà laissons le maître de coté , passons à l'esclave ..
L'esclave:
Voilà le programme ...
- On vide entièrement mysql pour être sur du neuf
- Importation du dump
- Arrêt SQL_SLAVE
- RESET SQL SLAVE
- Définition du master
- Redémarrage du master
- Tests
1 nettoyage:
une simple requête :
DROP DATABASES databaseA; DROP DATABASES databaseB; DROP DATABASES databaseC;
2 Importation
L'importation aussi simple que l'export :
mysql -uroot -p******* < dump.sql
L'informatique compliqué ... quenéni !!!
3 Reconfiguration SLAVE
Nous voilà à l'étape de configuration de l'esclave .. commençons par le couper
mysql -uroot -p******* STOP SLAVE; RESET SLAVE;
Puis définissons le master (toujours dans la console mysql)
CHANGE MASTER TO MASTER _HOST='ip du maitre', MASTER_USER='slave_user', MASTER_PASSWORD='pwdslaveuser', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=13860; SLAVE START;
Voyez l'utilisation du nom du fichier de logs binaires , et la position noté auparavant .
J'ai eu des soucis pour le bon démarrage de l'esclave , je suis obligé de le redémarrer complètement
STOP SLAVE; RESET SLAVE; START SLAVE;
4 : passons aux tests
Il faut nous assurer que l'esclave soit bien démarré , pour cela utilisez la commande sql suivant :
SHOW SLAVE STATUS;
Ce qui donne quelque chose du genre :

Il faut vérifier le début , à savoir :
- Slave_IO_State soit à Waiting for master to send event
- Slave_IO_Runnig soit à Yes
- Slave_SQL_Running soit aussi à Yes
Ne vous reste plus qu'à tester l'évolution de la valeur de la position ( dans le log binaire ) à l'insertion d'un enregistrement sur le serveur maître ...
Ici la valeur qui doit évoluer : 972765
A savoir
- Il est IMPERATIF de ne pas faire d'insertions sur le serveur esclave , seul les sélections sont possible, sinon , votre réplication s'arrêtera.
- Les valeurs des screens ci dessous ne correspondent pas ensembles , pour la simple raison que les commandes pour faire cet article se sont fait sur des postes qui ne sont pas de vrai replications.
Si vous avez des commentaires , n'hésitez pas .
Ch.
Toujours est-il ,



