1 – PRÉAMBULE

Lors d’une réunion, on m’a demandé comment mettre en place sur Mysql une réplication Maître/Maître entre 2 serveurs.

Je vous livre ici la version phpmyadmin.

Pour la version Ligne de commande, c’est ici : Réplication Master/Master Ligne de commande

J’ai besoin pour cela de 2 serveurs Mysql hébergés sur des machines virtuelles Centos 6.4.

Soit l’installation se fait en double en suivant cet article : Virtualisation 05 – Installation Centos 6.4

Soit vous avez comme moi une VM de référence et vous la clonée suivant cet article : Clonage de VM Centos

Sur les 2 VMs vous installez phpmyadmin comme ici : Installation phpmyadmin sur Centos

2 – ETAT DES LIEUX

2.1 – SERVEUR 1

  • nom = Centos_Mysql_Master1Slave2
  • ip = 192.168.0.151

2.2 – SERVEUR 2

  • nom = Centos_Mysql_Master2Slave1
  • ip = 192.168.0.152

3 – Création réplication Master1-Slave1

3.1 – TRAVAIL SUR LE MAÎTRE1

Sur phpmyadmin, créer une base nommée testreplication.

Création base testreplication

Création base testreplication

Cliquer sur Créer.

Créer un table dans cette base comme ceci :

Création table contacts

Création table contacts

Cliquer sur Exécuter.

Champs de la table contacts

Champs de la table contacts

Cliquer sur Sauvegarder.

Aller sur l’onglet Réplication.

Onglet Réplication

Onglet Réplication

 

Cliquer sur configurer de la partie Réplication maître.

 

Configuration du maître

Configuration du maître

Apporter les modifications au fichier /etc.cnf :

Le fichier /etc/my.cnf contient :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
user=mysql
# Semisynchronous Replication
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
;performance_schema
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Nous allons rajouté ces lignes :

1
2
3
4
server-id=876565
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=testreplication

Pour obtenir au final

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
user=mysql
# Semisynchronous Replication
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
;performance_schema
server-id=876565
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=testreplication
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Relancer le serveur mysql par la commande : service mysqld restart.

Revenir sur phpmyadmin et cliquer sur Exécuter.

Onglet Réplication

Onglet Réplication

Déployer les informations :

Informations du maître

Informations du maître

Cliquer sur Ajouter un utilisateur pour la réplication vers l’esclave.

Création de l'utilisateur

Création de l’utilisateur

 

Saisir les informations et cliquer sur  Exécuter.

Message de retour

Message de retour

 

L’utilisateur est bien créé.

Nous allons maintenant exporter la base. Aller sur l’onglet Exporter.

Exportation de la base

Exportation de la base

 

Cliquer sur Exécuter. Sauvegarder la base sur votre disque local.

3.2 – TRAVAIL SUR L’ESCLAVE (SLAVE1)

Nous allons d’abord importer la sauvegarde du serveur maître.

Aller sur l’onglet Importer.

Importation sur l'esclave

Importation sur l’esclave

 

Choisir le fichier sauvegardé au point précédent et cliquer sur Exécuter.

 

Nouvelle base sur l'esclave

Nouvelle base sur l’esclave

La base testreplication est bien crée sur le serveur esclave.

Aller dans l’onglet Réplication.

Onglet réplication

Onglet réplication

Cliquer sur configurer dans la partie Réplication esclave.

Réplication esclave

Réplication esclave

 

Modifier le fichier /etc/my.cnf.

Le fichier /etc/my.cnf contient :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
user=mysql
# Semisynchronous Replication
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
;performance_schema
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

nous rajoutons la ligne :

Pour obtenir ceci :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
user=mysql
# Semisynchronous Replication
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
;performance_schema
server-id=1379922579
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Relancer le serveur mysql par la commande : service mysqld restart.

Revenir sur phpmyadmin et cliquer sur Exécuter.

Configuration terminée

Configuration terminée

Rafraîchir la page.

Messages pour la réplication esclave

Messages pour la réplication esclave

Cliquer sur Contrôler le serveur esclave.

Contrôle du serveur esclave

Contrôle du serveur esclave

 

Cliquer sur Démarrer complètement.

Rafraîchir la page.

Plus d'erreurs

Plus d’erreurs

 

La réplication est opérationnelle.

Un enregistrement créé sur la serveur maître est répliquer sur le serveur esclave.

Création enregistrement

Création enregistrement

Cliquer sur Exécuter.

Enregistrement sur le serveur maître

Enregistrement sur le serveur maître

 

Il est répliqué sur le serveur esclave.

Enregistrement sur le serveur esclave

Enregistrement sur le serveur esclave

Une suppression sur le serveur maître est répercutée sur le serveur esclave.

Une modification sur le serveur maître est répercutée sur le serveur esclave.

Une création sur le serveur maître est répercutée sur les serveur esclave.

Dans l’autre sens cela ne fonctionne pas. Nous allons configurer la réplication retour.

4 – CRÉATION RÉPLICATION MASTER2-SLAVE2

4.1 – TRAVAIL SUR LE MAÎTRE2

Aller sur l’onglet Réplication du serveur maître2.

Réplication Maître2

Réplication Maître2

Cliquer sur configurer de la partie Réplication maître.

Configuration du maître 2

Configuration du maître 2

 

Choisir vos options, modifier le fichier /etc/my.cnf avec les indications de la page.

Il n’est pas nécessaire de renseigner le server-id.

Le fichier /etc/my.cnf devient :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used (fedora >= 15).
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld according to the
user=mysql
# Semisynchronous Replication
# uncomment next line on MASTER
;plugin-load=rpl_semi_sync_master=semisync_master.so
# uncomment next line on SLAVE
;plugin-load=rpl_semi_sync_slave=semisync_slave.so
# Others options for Semisynchronous Replication
;rpl_semi_sync_master_enabled=1
;rpl_semi_sync_master_timeout=10
;rpl_semi_sync_slave_enabled=1
;performance_schema
server-id=1379929819
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=testreplication
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Relancer le serveur mysql par la commande : service mysqld restart.

Revenir sur phpmyadmin et cliquer sur Exécuter.

Regarder les informations de ce serveur maître 2.

Informations du serveur maître 2

Informations du serveur maître 2

Cliquer sur Ajouter un utilisateur pour la réplication vers l’esclave.

Nouvel utilisateur

Nouvel utilisateur

Renseigner les informations et cliquer sur Exécuter.

Utilisateur crée

Utilisateur crée

 

4.2 – TRAVAIL SUR L’ESCLAVE (SLAVE2)

Aller sur l’onglet Réplication.

Onglet réplication

Onglet réplication

Cliquer sur configurer de la partie Réplication esclave.

Configuration du serveur esclave 2

Configuration du serveur esclave 2

Cliquer sur Exécuter.

Messages serveur esclave 2

Messages serveur esclave 2

 

Cliquer sur Démarrer complètement.

Rafraîchir la page.

5 – CONCLUSION

Vous avez maintenant un réplication bi-directionnelle maître à maître fonctionnelle.

Il est possible d’effectuer toutes ces manipulations en ligne de commande.

Ce sera l’objet de mon prochain article.