Ce tutoriel vous guidera de mettre en place une réplication en temps réel entre deux serveurs MySQL soient un Master et un Slave.
Pour ma part, les deux serveurs utilisés sont configurés comme suit :
-OS: CentOS 6.5
-RAM : 4Go
-CPU : 1
-Adresse IP du Master : 192.168.1.20
-Adresse IP du Slave : 192.168.1.21
Configuration du Master :
Installez MySQL en utilisant la commande YUM :
# yum install mysql-server mysql
Ouvrez le fichier de configuration MySQL my.cnf à l'aide de la commande VI :
# vi /etc/my.cnf
Ajoutez les lignes ci-dessous sous la section [mysqld], n'oubliez pas de remplacer le nom de la base de données que vous souhaiter répliquer, pour ma part, elle est nommée infolplusit :
server-id = 1
binlog-do-db=infoplusit
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
Redémarrez le service MySQL:
# service mysqld restart
Connectez-vous sur le serveur MySQL en tant que root avec cette commande :
# mysql -u root -p
Maintenant, on doit créer un utilisateur qui sera utilisé par le serveur Slave pour la récupération des informations depuis le Master, on va lui attribuer les droits de réplication :
mysql> grant replication slave on *.* to 'slv_user'@'%' identified by 'Password';
mysql> flush privileges;
mysql> flush tables with read lock;
mysql> show master status;

A cette étape, on va exporter toutes les bases de données à répliquer(dans notre cas: une seule) pour l'importer dans un deuxième temps dans le slave, cette manip nous garanti que les deux serveurs démarrent avec la même version de la base de données.
# mysqldump -u root -p --all-databases --master-data > /root/dbdump.db
Déverrouillez ensuite les tables :
mysql> unlock tables;
mysql>quit;
Copiez la base de données exporté sur le serveur slave :
#scp /root/dbdump.db root@192.168.1.21:/root/
La configuration du Master s'est terminé, on passe à la configuration du Slave.
Configuration du Slave :
Installez MySQL en utilisant la commande YUM :
# yum install mysql-server mysql

Pour ma part, les deux serveurs utilisés sont configurés comme suit :
-OS: CentOS 6.5
-RAM : 4Go
-CPU : 1
-Adresse IP du Master : 192.168.1.20
-Adresse IP du Slave : 192.168.1.21
Configuration du Master :
Installez MySQL en utilisant la commande YUM :
# yum install mysql-server mysql
Ouvrez le fichier de configuration MySQL my.cnf à l'aide de la commande VI :
# vi /etc/my.cnf
Ajoutez les lignes ci-dessous sous la section [mysqld], n'oubliez pas de remplacer le nom de la base de données que vous souhaiter répliquer, pour ma part, elle est nommée infolplusit :
server-id = 1
binlog-do-db=infoplusit
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
Redémarrez le service MySQL:
# service mysqld restart
Connectez-vous sur le serveur MySQL en tant que root avec cette commande :
# mysql -u root -p
Maintenant, on doit créer un utilisateur qui sera utilisé par le serveur Slave pour la récupération des informations depuis le Master, on va lui attribuer les droits de réplication :
mysql> grant replication slave on *.* to 'slv_user'@'%' identified by 'Password';
mysql> flush privileges;
mysql> flush tables with read lock;
mysql> show master status;
Nous avons ainsi les informations suivantes :
-mysql-bin.000003 : c'est le nom du fichier dans lequel le serveur écrit les modifications sur les bases de données.
-329 : C'est la position du fichier bin
-infoplusit : c'est le nom de base de données à répliquer
Veuillez noter ces informations quelque part, on en aura besoin dans la configuration du slave.
A cette étape, on va exporter toutes les bases de données à répliquer(dans notre cas: une seule) pour l'importer dans un deuxième temps dans le slave, cette manip nous garanti que les deux serveurs démarrent avec la même version de la base de données.
# mysqldump -u root -p --all-databases --master-data > /root/dbdump.db
Déverrouillez ensuite les tables :
mysql> unlock tables;
mysql>quit;
Copiez la base de données exporté sur le serveur slave :
#scp /root/dbdump.db root@192.168.1.21:/root/
La configuration du Master s'est terminé, on passe à la configuration du Slave.
Configuration du Slave :
Installez MySQL en utilisant la commande YUM :
# yum install mysql-server mysql
Ouvrez le fichier de configuration MySQL my.cnf à l'aide de la commande VI :
# vi /etc/my.cnf
Ajoutez les lignes ci-dessous sous la section [mysqld], spécifiez l'adresse ip du Master, le nom d'utilisateur créé précédemment, son mot de passe et finalement le nom de la base de donnés à répliquer :
server-id = 2
master-host=192.168.1.20
master-connect-retry=60
master-user=slv_user
master-password=Password
replicate-do-db=infoplusit
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
Nous allons importer maintenant le fichier dump sur ce serveur :
#mysql -u root -p < /root/dbdump.db
Redémarrez le service mysql :
#service mysqld restart
Nous allons nous connecter au serveur MySQL et lui renseigner l'adresse ip du Master, l'utilisateur autorisé à récupérer les infos depuis le master, son mot de passe, le fichier bin et son position, pour ce faire, on procède comme suit :
#mysql -u root -p
mysql>slave stop;
mysql>change master to master_host='192.168.1.20', master_user='slv_user',master_password='Password', master_log_file='mysql-bin.000003', master_log_pos=329;
mysql>slave start;
mysql>show slave status \G;

Vérifier le bon fonctionnement de la réplication :
Pour vérifier l'opérationnalité de la réplication, on va créer une base de données nommée infoplusit, créer dedans une table et y insérer des données :
Sur le Master :
mysql>create database infolplusit;
mysql>use infoplusit;
mysql>create table voitures (c int);
mysql>insert into voitures (c) values (407);
mysql>select * from voitures ;

# vi /etc/my.cnf
Ajoutez les lignes ci-dessous sous la section [mysqld], spécifiez l'adresse ip du Master, le nom d'utilisateur créé précédemment, son mot de passe et finalement le nom de la base de donnés à répliquer :
server-id = 2
master-host=192.168.1.20
master-connect-retry=60
master-user=slv_user
master-password=Password
replicate-do-db=infoplusit
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
log-error = /var/lib/mysql/mysql.err
master-info-file = /var/lib/mysql/mysql-master.info
relay-log-info-file = /var/lib/mysql/mysql-relay-log.info
log-bin = /var/lib/mysql/mysql-bin
Nous allons importer maintenant le fichier dump sur ce serveur :
#mysql -u root -p < /root/dbdump.db
Redémarrez le service mysql :
#service mysqld restart
Nous allons nous connecter au serveur MySQL et lui renseigner l'adresse ip du Master, l'utilisateur autorisé à récupérer les infos depuis le master, son mot de passe, le fichier bin et son position, pour ce faire, on procède comme suit :
#mysql -u root -p
mysql>slave stop;
mysql>change master to master_host='192.168.1.20', master_user='slv_user',master_password='Password', master_log_file='mysql-bin.000003', master_log_pos=329;
mysql>slave start;
mysql>show slave status \G;
Vérifier le bon fonctionnement de la réplication :
Pour vérifier l'opérationnalité de la réplication, on va créer une base de données nommée infoplusit, créer dedans une table et y insérer des données :
Sur le Master :
mysql>create database infolplusit;
mysql>use infoplusit;
mysql>create table voitures (c int);
mysql>insert into voitures (c) values (407);
mysql>select * from voitures ;
Sur le Slave :
On doit avoir le même résultat que le master :
mysql>use infoplusit;
mysql>select * from voitures;
FIN