REPLICATION – MYSQL (FR)

Dans cet article nous allons mettre en place la réplication d’une base de données sur 2 serveurs MySQL.

PREREQUIS

  1. deux machine debian

 

Avant de faire quoi que ce soit, commençons par mettre à jour nos 2 machines.

apt-get update && apt-get upgrade

Ensuite nous allons installer mysql-server sur les 2 machines.

apt-get install -y mysql-server

 

REPLICATION MASTER-SLAVE

La réplication master-slave est une réplication à sens unique. c’est à dire que seul le serveur maître pourra ajouter, supprimer, modifier le contenue de la base de données à répliquer. Alors que le serveur esclave, ne pourra que copier la base de données du serveur maître et il servira de serveur de secours en cas de panne sur le serveur maître.

Pour la réplication master-slave, on doit définir quel serveur sera maître et quel serveur sera esclave. Pour ma situation je choisis « ServerBBD1 » qui sera maître et « ServerBDD2 » qui sera esclave.


Configuration du ServeurBDD1

Pour commencer on se connecte à la console MySQL.

mysql -u root -p

Ensuite on créer une base de données.

create database replication;

Puis quittez la console avec la commande exit.


On doit ensuite accéder au fichier de configuration /etc/mysql/my.cnf et changer quelque ligne du fichier pour permettre la réplication de la base de données.

nano /etc/mysql/my.cnf

5)my.cnf bind address

6)my.cnf serv id etc

Une fois les modifications faites, on redémarre le service mysql.

service mysql restart

Maintenant on se reconnecte de nouveau à la console MySQL.

mysql -u root -p

On assigne les privilèges de réplications à l’utilisateur ‘repuser’@’Ip-serveur-slave’ qui va être créé suite à cette commande:

grant replication slave on *.* to 'repuser'@'192.168.1.107' identified by 'password';

(N’oubliez pas de changer l’adresse IP, l’utilisateur et le mot de passe en fonction de votre situation)

flush privileges;

Pour la suite du tuto, nous devons noter le nom du fichier et la position en faisant la commande

show master status;

Notez le contenu de « File » et de « Position ».

 

Exportation de la base de données

Nous allons maintenant exporter la base de données du serveur « ServerBBD1 » vers le 2ème serveur « ServerBDD2 ».

Pour se faire nous allons d’abord passer notre base de données en lecture seule

use replication;

flush tables with read lock;

Ensuite on quitte la console mysql et on créer un dump de la base de données afin de l’exporter sur le serveur slave.

mysqldump -u root -p replication > replication.sql

Et une fois l’exportation faite, on peut retourner dans la console mysql et enlever la lecture seule sur la base de données.

use replication;
unlock tables;

Maintenant nous allons envoyer le dump que l’on a créé sur le serveur slave grâce à la commande:

scp replication.sql root@192.168.109.107:/root/

Configuration du ServeurBDD2

Sur le serveurBDD2 on créer la même base de données que sur le serveurBDD1.

create database replication;

Ensuite on importe le dump que l’on a récupérer sur notre nouvelle base de données.

mysql -u root -p replication < replication.sql

Quittez la console mysql et configurez le fichier /etc/mysql/my.cnf comme sur le serveurBDD1 mais en changeant l’ID du serveur à 2.

nano /etc/mysql/my.cnf

5)my.cnf bind address

16) edit my.cnf bdd2

Et enfin on redémarre le service mysql

service mysql restart

Nous allons maintenant indiquer le serveur maître au serveurBDD2.

Pour se faire reconnectez-vous à la console mysql et entrez ces commandes.

stop slave;
change master to master_host='192.168.109.106',master_user='repuser', master_password='password', master_log_file='mysql-bin.000001', master_log_pos=341;
start slave;

N’oubliez pas de changer le master_log_file et le master_log_pos par ce que vous avez notez un peu plus haut.


Pour savoir si la réplication fonctionne, on va d’abord regarder le statut slave sur le serveurBDD2

show slave status\G

20) show slave status

Si la commande vous renvoie « Waiting for master to send event » à la première ligne, c’est que tout fonctionne correctement.

Si il vous renvoie un autre message que celui-là, c’est que la réplication ne fonctionne pas.


Nous allons pour finir tester la réplication en créant une table sur le serveurBBD1 et vérifier si le serveurBDD2 à bien la même table.

21) test

Voyons maintenant sur le serveurBDD2

22) resultat test

Tout fonctionne!

 

REPLICATION MASTER-MASTER

La réplication master-master est une réplication à double sens. c’est à dire que les 2 serveurs pourront ajouter, supprimer, modifier le contenue de la base de données à répliquer.


Pour faire une réplication master-master, il suffit simplement de faire une réplication master-slave sur les 2 serveurs. c’est à dire que les 2 serveurs seront à la fois maître et esclave.

Nous allons donc refaire ce que l’on a fait précédemment mais avec cette fois-ci le serveurBDD1 en tant qu’esclave et le serveurBDD2 en tant que maître, tout en gardant la configuration faite précédemment.

 

Configuration du ServeurBDD2

Il nous suffit juste de faire cette commande

grant replication slave on *.* to 'repuser'@'192.168.109.106' identified by 'password';

N’oubliez pas d’adapter en fonction de votre situation.

Puis

flush privileges;

Et enfin on affiche le dossier et la position avec la commande

show master status;

24) show master status bdd2.PNG

Notez bien le file et la position.

Configuration du ServeurBDD1

Maintenant on indique le serveur maître au serveurBDD1.

stop slave;
change master to master_host = '192.168.109.107', master_user = 'repuser', master_password = 'password', master_log_file = 'mysql-bin.000003', master_log_pos = 526;
start slave;

Normalement si tout est correct, tapez la commande

show slave status\G

25) show slave status

Si la commande vous renvoie « Waiting for master to send event » c’est que tout est bon.


On va maintenant créer une table « rep » avec le serveurBDD2 (qui d’origine était le serveur slave et ne pouvais pas créer, supprimer, modifier, etc..) sur la base de données « replication ».

26) test

use replication;
create table rep ( ID INT NOT NULL AUTO_INCREMENT, TEST VARCHAR(100) NOT NULL, PRIMARY key ( ID ));

Maintenant on regarde les tables pour voir si la table est bien dans la base de données réplication.

show tables;

27) show tables.PNG

On voit bien table que l’on a créé.


Maintenant on va sur le serveurBDD1 pour voir si on a bien la nouvelle table et si on on peut la supprimer.

28) drop table.PNG

On peut voir que l’on a bien la nouvelle table et qu’on a réussi à la supprimer.

 

SOURCES:   http://denisrosenkranz.com/tuto-replication-master-slave-avec-mysql-sous-debian-8/

http://www.responsive-mind.fr/replication-mysql-master-master/

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s