0

MySQL et la réplication

Posted by Division-par-zero on 20 mai 2013 in Backup, Bashful, Maintenance, Réseau, Technique |

Préambule

Je viens de mettre en place la réplication entre Bashful (Situé à BHS au Canada), et Grumpy (Toujours à RBX en France) ; Ce billet vos plus de note rapide que de vérité sur la mise en place de deux serveur de réplication ! Ça je verrais à l’usage.

J’ai trouvé sur la toile, plusieurs ressources, mais aucune qui semble expliquer comment faire une réplication simple, basique et claire ; ça j’espère le faire ici 🙂

Les serveurs

Grumpy : Serveur maître

  • Version du système d’exploitation : Debian 7.0 (Wheezy)
  • Version Mysql : 5.5.31, for debian-linux-gnu (x86_64)
  • Version PhpMyAdmin : 4 (nightly 2013-05-20)
  • Bases de données : Plusieurs déjà en place

Bashful : Serveur esclave

  • Version du système d’exploitation : Debian 6.0 (Squeezy)
  • Version Mysql : 5.5.31, for debian-linux-gnu (x86_64)
  • Version PhpMyAdmin : 3.x
  • Bases de données : Aucune, mise à part les bases d’origines

Configuration des serveurs

Grumpy : Serveur maître

Modifier le fichier « /etc/mysql/my.cnf » :

1
2
3
4
5
6
7
8
# Le serveur étant sur le VPN, je n'autorise les connexions que depuis l'adresse IP VPN de Grumpy.
# Fait intéressant : Les connexions locales ne sont pas affectées, car utilise la socket locale.
bind-address = 192.168.59.1

# Nommer le serveur (Ici : 1)
server-id = 1
# Activer les log, et spécifier l'emplacement
log_bin = /var/log/mysql/mysql-bin.log

Rebooter le daemon mysql :

1
# sudo service mysql restart

 

Pour finaliser la configuration du serveur, il faut ce connecter à PhpMyAdmin, dans le menu en haut, choisir « Replication », normalement vous avez trois options :

  • Show master status
  • Show connected slaves
  • Add slave replication user

Choisissons le troisième « Add slave replication user » :

  • Username : replication
  • Host : Use text field : <ip vpn de bashful>
  • Password : Thatsasecretbitch
  • Re-type : Thatsasecretbitch

Et on valide notre utilisateur de réplication !

Bashful : Serveur esclave

Modifier le fichier « /etc/mysql/my.cnf » :

1
2
# Nommer le serveur (Ici : 2)
server-id = 2

Rebooter le daemon mysql :

1
# sudo service mysql restart

Pour finaliser la configuration du serveur, il faut ce connecter à PhpMyAdmin, dans le menu en haut, choisir « Replication », cette fois-ci, pas de configuration pour dire que le serveur est configuré pour être maître, on va donc cliquer sur le bouton « configure » dans la partie « Slave replication » :

  • Username : replication
  • Password : Thatsasecretbitch
  • Host : <ip vpn de Grumpy>
  • Port : 3306 (Sauf s’il est différent chez vous)

Go

… à ce stage le liens est fait, si tous c’est correctement déroulé.

Note : à l’écriture de ce billet, j’en suis à peut prêt ici, le reste je spécule est je test, j’ai commencé le billet, car la partie synchronisation est un peu longue pour moi –> normale / anormale ; logique / illogique : tant de questions sans réponses 🙂

Synchroniser les bases déjà présentes

Avec les options proposées par PhpMyAdmin

Et oui, j’ai des bases sur Grumpy à synchroniser sur Bashful, pour cela je me met sur Bashful (Esclave, donc), dans Replication (Menu du haut), puis je clique sur le choix « Synchroniser les bases de données avec le serveur maître », je coche les deux cases :

  • Structure
  • Données

et lance la synchronisation…

 

… Pour le reste, il va falloir bidouiller 🙂 Si j’y pense, je reviens sur ce billet !

Au final, je suis convaincus que cette solution est très bien pour des petites synchronisation (très petite), moi ça n’a pas fonctionné, j’ai donc utilisé la solution suivante :

Avec une synchronisation à froid

Problème : Il va falloir stopper le serveur maître (Grumpy) quelques minutes.

  1. Éteindre le serveur esclave (Bashful)
  2. Supprimer le dossier /var/lib/mysql/ (rm -r /var/lib/mysql)
  3. Éteindre le serveur maître
  4. Supprimer les fichiers dans /var/log/mysql/ (rm /var/log/mysql/*) [Il s’agit du dossier par défaut où sont stockés les log binaire, défini dans la configuration de Grumpy]
  5. Copier le dossier /var/lib/mysql (Depuis Grumpy vers Bashful) [Par quelques solutions de copie : tar / rsync / …]
  6. Ouvrir le fichier « /etc/mysql/debian.cnf » sur les deux serveurs, et recopier le mot de passe (2 fois), depuis le maître, vers l’esclave ; sans quoi Debian ne va pas être content.
  7. Relancer les serveurs (Peut-importe l’ordre)
  8. Reconfigurer Bashful, comme serveur esclave (Voir chapitre « Configuration des serveurs » > « Bashful : Serveur esclave » ci-dessus)
  9. Sur le PhpMyAdmin de Bashful, cliquer sur Replication (Menu du haut), puis cliquer sur le choix « Control slave server » puis « Start completly »

Tests de réplication

La partie la plus simple (Bien qu’au final ce ne soit pas très compliqué) : créer, supprimer, ajouter, modifier ; tables, données, et tous ce que vous voulez sur le serveur maître.

Elles sont maintenant synchronisé, vous pouvez éteindre le serveur esclave pour faire une sauvegarde à froid, et le relancer, il va rejouer les logs binaires, là où ils les avaient laissés.

Laisser un commentaire

Copyright © 2010-2017 Le blog de Grumpy All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.