Table des matières

, , , , , , ,

Replication Mysql master/master en utilisant Multi-Master Replication Manager

Cette page est dans les cartons depuis bien trop longtemps je profite d'un peu de disponibilité pour la mettre en ligne

Nous allons donc voir comment mettre en oeuvre un cluster MySQL haute disponibilité en utilisant une réplication master/maseter et Multi-Master Replication Manager for MySQL

L'installation sera effectuée sur une ubuntu 10.04.2 LTS lucid, elle nécessite au moins 3 machines :

Machine Adresse IP Rôle
frtls-testmysql-1 10.41.51.163 noeud 1 mysql master
frtls-testmysql-2 10.41.51.145 noeud 2 mysql master
frtls-testmysql-mon 10.41.51.184 monitor MMM

Mise en place de la replication master/master

Installation initiale

Sur chacun des deux noeuds mysql :

apt-get install mysql-server

Configuration de la replication master-master

Attention, les regles suivantes sont a respecter scrupuleusement :
  • Chaque server-id doit etre unique
  • mettre l'auto-increment-offset a 1 sur le premier serveur et 2 sur le second. auto-increment-offset marche en conjonction avec auto-increment-increment pour controler la generation des valeurs d'auto-increment. Chaque serveur nécessite un auto-increment-offset différent pour éviter les conflits. Si par exemple on a deux serveurs, avec auto-increment-increment à 2 et auto-increment-offset à 1 et 2 respectivement sur les noeuds 1 et 2, on obtiendra (et c'est notre but :-) )les sequences suivantes d'autoincrément pour conserver un identifiant unique global quel que soit le nombre de noeuds :
    Serveur 1: 1,3,5,7,9,11,...
    Serveur 2: 2,4,6,8,10,12,...

On dispose maintenant d'un cluster MySQL en replication Master/Master qui fonctionne

Si l'on désire changer l'utilisateur servant a la réplication, il faut le changer dans les fichiers de configuration, mais en plus effectuer les opérations suivantes sur chacun des noeuds (par exemple pour renommer l'utilisateur en “replicate_user” :
stop slave ;
CHANGE MASTER TO MASTER_USER='replicate_user' ;
start slave ;

Mise en place de la HA sur ce cluster avec MMM

MMM nécessite un agent sur chaque noeud MySQL et un moniteur tournant sur une machine tierce qui sert a détecter les erreurs de disponibilité et/ou réplication des noeuds, et basculer le service entre les noeuds (en utilisant une IP flottante)

Téléchargement

Les paquets .deb sont disponibles ici

Installation

Configuration

10.41.51.254 est une IP “neutre” utilisée pour verifier le lien reseau du monitor (hors noeuds mysql), ici le routeur
mmm_control show
db1(10.41.51.163) master/ONLINE. Roles: writer(10.41.51.240)
db2(10.41.51.145) master/ONLINE. Roles: reader(10.41.51.241)
il est possible d'utiliser la directive auto_set_online du monitor pour définir une valeur en seconde pour passer automatiquement de l'etat AWAITING_RECOVERY a l'etat ONLINE. Pour moi cette manipulation doit rester manuelle : si on en est la c'est qu'il y a eu un problème sur un des noeuds, et s'il y a eu un problème autant le réparer avant d'aller plus loin ;-)

Et voila on a un cluster mysql-mmm opérationnel : il ne reste plus qu'a y créer des bases.

Ajout de bases de données et utilisateurs

Références externes