J’ai eu une conversation par mail il y a peu avec l’ami Cyril à propos de Galera replication.
C’est vrai que ce produit suscite un réel intérêt des acteurs de la communauté MySQL et j’aimerais modestement vous apporter mon sentiment sur ce produit et ses dérivés.

J’ai simplement eu l’occasion de tester ce produit dans le cadre d’un projet (en fait c’était XtraDB Cluster mais c’est presque la même chose).
Je n’ai pas une réelle expérience de production sur ce produit mais je vous livre ici ce que j’ai retenu de la prise en main du produit et des quelques tests que j’ai pu réaliser.

Galera replication, c’est quoi ?

C’est un système de réplication synchrone multi-masters. Tous les serveurs sont actifs en lectures et en écritures. Ce sont tous des maitres en quelque sorte.
Toutes les données sont néanmoins stockées sur chacun des serveurs, il s’agit en effet d’un système de type “share nothing” (Les données ne sont pas partagées).
Il s’agit en fait d’une librairie qui vient se greffer au noyau MySQL. Cette librairie est distribuée en open source.

A quoi ça sert ?

Les cas d’utilisation les plus courants sont les suivants :

  • Répartition de charge pour les lectures
  • Réplication master-master (écritures distribuées)
  • Système de haute disponibilité (à partir de 3 serveurs)

Quelles différences avec la réplication classique ?

  • Tous les noeuds sont des maitres indépendants, les écritures peuvent être faites depuis n’importe quel noeud
  • Il n’y a pas de notion de bascule master/slave en cas de problème puisqu’il n’y a que des maitres
  • La réplication des données est synchrone (enfin presque)
  • L’intégration de nouveaux noeuds est automatisée
  • La réplication se fait en parallèle (plusieurs threads dédiés à la réplication)

Comment l’implémenter ?

Je vous recommande vivement de passer par l’un des deux produits qui proposent une solution intégrée de Galera :

L’installation et la prise en main de ces produits est à mon avis plus simple que d’essayer d’implémenter soi-même la librairie dans le moteur MySQL standard.
Sachez que c’est relativement simple à installer, pour faire simple, ce n’est pas plus compliqué que d’installer un MySQL classique.

Bon, et alors, tu en as pensé quoi ?

La première chose sur laquelle je me suis jeté quand j’ai commencé à travailler avec le produit c’est la documentation.
La partie vers laquelle je me tourne en premier lieu, quel que soit le produit, ce sont les limitations.
Je vous recommande vivement de lire cette page avant d’aller plus loin avec le produit.
Les deux limitations les plus marquantes sont le seul support de InnoDB (pas de MyISAM) et quelques limitations concernant les “grosses” transactions.

Voici donc ce que je peux en dire :

  • Le coté synchrone mis en avant est à mon avis un peu exagéré car il ne s’agit pas réellement de réplication synchrone (on parle de “virtuellement synchrone“). Ce concept est d’ailleurs à l’origine des problèmes que l’on peut rencontrer avec certaines transactions
  • C’est très très très verbeux…
  • Il s’agit d’une alternative simple à implémenter si on a besoin de faire du master-master
  • Des outils existent pour le monitoring (Plugin Nagios par exemple) ainsi que pour l’installation
  • Je pense qu’on manque encore d’un peu de recul sur la techno mais ça commence à prendre depuis que MariaDB et Percona ont sorti leurs versions packagées
  • C’est un produit qui répond à un besoin complet, ce n’est pas forcement astucieux de partir sur cette solution uniquement si vous n’avez besoin que d’une partie des fonctionnalités. Par exemple, si votre besoin est simplement de basculer plus facilement du master vers un slave, MHA fait ça très bien.

J’espère que ces quelques retours pourront vous aider et si vous avez une expérience du produit, n’hésitez pas à la partager dans les commentaires.

Merci




Share the love!

Inscrirez vous au flux RSS ou par email pour recevoir automatiquement et en temps réel une notification de publication des nouveaux articles.

Oracle, MySQL, and InnoDB are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners