Réplication Master/Master Phpmyadmin

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

Cliquer sur Créer.

Créer un table dans cette base comme ceci :

Création table contacts

Cliquer sur Exécuter.

Champs de la table contacts

Cliquer sur Sauvegarder.

Aller sur l'onglet Réplication.

Onglet Réplication

 

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

 Configuration du maître

Apporter les modifications au fichier /etc.cnf :

Le fichier /etc/my.cnf contient :

[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
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# 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

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Nous allons rajouté ces lignes :

server-id=876565
log_bin=mysql-bin
log_error=mysql-bin.err
binlog_do_db=testreplication

Pour obtenir au final

[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
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# 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

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;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

 Déployer les informations :

Informations du maître

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

Création de l'utilisateur

 

Saisir les informations et cliquer sur  Exécuter.

Message de retour

 

L'utilisateur est bien créé.

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

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

 

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

 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

Cliquer sur configurer dans la partie Réplication esclave.

Réplication esclave

 

Modifier le fichier /etc/my.cnf.

Le fichier /etc/my.cnf contient :

[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
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# 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

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;performance_schema


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

nous rajoutons la ligne :

server-id=1379929819

Pour obtenir ceci :

[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
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# 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

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;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

Rafraîchir la page.

Messages pour la réplication esclave

Cliquer sur Contrôler le serveur esclave.

Contrôle du serveur esclave

 

Cliquer sur Démarrer complètement.

Rafraîchir la page.

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

Cliquer sur Exécuter.

Enregistrement sur le serveur maître

 

Il est répliqué 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

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

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 :

[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
# instructions in http://fedoraproject.org/wiki/Systemd
user=mysql

# Semisynchronous Replication
# http://dev.mysql.com/doc/refman/5.5/en/replication-semisync.html
# 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

# http://dev.mysql.com/doc/refman/5.5/en/performance-schema.html
;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

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

Nouvel utilisateur

Renseigner les informations et cliquer sur Exécuter.

Utilisateur crée

 

4.2 - Travail sur l'esclave (Slave2)

Aller sur l'onglet Réplication.

Onglet réplication

Cliquer sur configurer de la partie Réplication esclave.

Configuration du serveur esclave 2

Cliquer sur Exécuter.

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.

Aucun commentaire