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.
Cliquer sur Créer.
Créer un table dans cette base comme ceci :
Cliquer sur Exécuter.
Cliquer sur Sauvegarder.
Aller sur l'onglet Réplication.
Cliquer sur configurer de la partie Réplication 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.
Déployer les informations :
Cliquer sur Ajouter un utilisateur pour la réplication vers l'esclave.
Saisir les informations et cliquer sur Exécuter.
L'utilisateur est bien créé.
Nous allons maintenant exporter la base. Aller sur l'onglet Exporter.
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.
Choisir le fichier sauvegardé au point précédent et cliquer sur Exécuter.
La base testreplication est bien crée sur le serveur esclave.
Aller dans l'onglet Réplication.
Cliquer sur configurer dans la partie 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.
Rafraîchir la page.
Cliquer sur Contrôler le serveur esclave.
Cliquer sur Démarrer complètement.
Rafraîchir la page.
La réplication est opérationnelle.
Un enregistrement créé sur la serveur maître est répliquer sur le serveur esclave.
Cliquer sur Exécuter.
Il est répliqué 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.
Cliquer sur configurer de la partie Réplication maître.
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.
Cliquer sur Ajouter un utilisateur pour la réplication vers l'esclave.
Renseigner les informations et cliquer sur Exécuter.
4.2 - Travail sur l'esclave (Slave2)
Aller sur l'onglet Réplication.
Cliquer sur configurer de la partie Réplication esclave.
Cliquer sur Exécuter.
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.