Aller au contenu

MYSQL : Réplication MASTER MASTER

Avant de commencer vous aurez besoin de récupérer les ip des 2 serveurs qui vont héberger vos instances MYSQL

Dans mon exemple les ip seront  :

Serveur 1 : 198.162.0.12

Serveur 2 : 198.162.0.13

Aprés installation de vos instances mysql (sur windows ou unix ) vous pouvez commencer les étapes qui suivent .

Étape 1 –  Configuration de MySQL sur le serveur 1

vous devez éditer le fichier /etc/mysql/my.cnf sur votre serveur.

#server-id = 1
#log_bin = /var/log/mysql/mysql-bin.log
#binlog_do_db = include_database_name
adresse de la bind = 127.0.0.1

Le server-id vous permet d’identifier votre serveur particulier de manière unique, dans la configuration de la réplication.

La première chose que vous devez faire est de décommenter la première ligne, en supprimant le symbole « # » au début.

La deuxième ligne spécifie le fichier qui stockera les journaux de toutes les modifications apportées à une base de données ou une table mysql.

La troisième ligne spécifie toutes les bases de données que vous voulez répliquer entre vos serveurs.

Vous pouvez ajouter plusieurs bases de données à cette ligne.

Dans l’exemple donné, nous utiliserons une seule base de données nommée « bibliogeekDatabase ».

Enfin, la dernière ligne indique au serveur d’accepter les connexions depuis Internet (en n’écoutant pas sur 127.0.0.1).

server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = bibliogeekDatabase
# bind-address = 127.0.0.1

Pour que tous ces changements soient pris en compte, vous devez redémarrer le service mysql à l’aide de la commande suivante :

sudo service mysql restart

L’étape suivante consiste à modifier les paramètres de la ligne de commande dans notre instance mysql.

mysql -u root -p

Une fois que vous vous êtes connecté avec succès, vous devez exécuter certaines commandes.

Tout d’abord, vous devez créer un pseudo-utilisateur qui sera utilisé pour le processus de réplication. Dans l’exemple de ce post, nous prenons le nom de cet utilisateur comme « bibliogeekUtilisateur ». « password » doit être remplacé par le mot de passe que vous souhaitez utiliser pour la réplication.

créer un utilisateur ‘bibliogeekUtilisateur’@’%’ identifié par ‘password’ ;
Cet utilisateur doit recevoir des permissions suffisantes pour permettre la réplication :

grant replication slave on *.* to 'bibliogeekUtilisateur'@'%' ;

Enfin, pour terminer la configuration initiale du serveur 1, nous devons extraire certaines informations sur l’instance MySQL actuelle qui seront ensuite fournies au serveur 2.

La commande suivante peut être utilisée pour obtenir les informations requises.

show master status ;

Veillez à noter le fichier et la position que vous utiliserez à l’étape suivante.

Étape 2 –  configuration de MySQL sur le serveur 2

Vous devez configurer le serveur 2 comme le serveur 1 en répétant les mêmes étapes que ci-dessus. Tout d’abord, nous devons l’installer, après une installation réussie, modifiez le fichier my.cnf de la même manière. Le server-id de ce serveur sera, cependant, défini à 2.

server-id = 2
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = bibliogeekDatabase
# bind-address = 127.0.0.1

L’étape suivante consiste à sauvegarder le fichier puis à redémarrer le service mysql :

sudo service mysql restart

Une fois la configuration terminée, vous devez aller dans le shell mysql et définir quelques options de configuration supplémentaires.

mysql -u root -p

La première étape comme dans le cas du serveur 1 est de créer le pseudo-utilisateur qui sera responsable de la réplication.

créer un utilisateur ‘bibliogeekUtilisateur’@’%’ identifié par ‘password’ ;
Vous devez vous assurer que cet utilisateur a les permissions requises :.

grant replication slave on *.* to 'bibliogeekUtilisateur'@'%' ;

Maintenant, il est temps de créer la base de données que vous voulez répliquer.

create database bibliogeekDatabase ;

L’étape suivante utilise les informations que vous avez notées précédemment. La commande suivante permettra à la réplication de commencer :

stop slave ; 
CHANGE MASTER TO MASTER_HOST = '198.162.0.12', MASTER_USER = 'bibliogeekUtilisateur', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107 ; 
start slave;

Vos valeurs pour MASTER_LOG_FILE et MASTER_LOG_POS peuvent être différentes de celles indiquées ci-dessus. Vous devez utiliser les valeurs que « SHOW MASTER STATUS » renvoie sur le serveur 1.

Pour activer la réplication maître-maître dans l’autre sens (du serveur 2 au serveur 1), vous devez prendre note du fichier journal maître et de sa position .

Pour obtenir les informations nécessaires, utilisez la commande suivante :

SHOW MASTER STATUS ;

Étape 3 – Fin de la réplication sur le serveur 1

Vous devez encore terminer la configuration de la réplication sur le serveur 1. L'exécution de la commande suivante répliquera toutes vos données à partir du serveur 2 :
stop slave ; 
CHANGE MASTER TO MASTER_HOST = '198.162.0.13', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107 ; 
start slave;

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *