Cluster MySQL

Un article de Diablotins.org.


Image:brush.png

Sommaire

Mise en place d’un architecture de type cluster MySQL

Description

Cette doc traite de la mise en place du module NDB CLUSTER De MySQL. Celui-ci permet de gĂ©rer des pools d’instances Mysqld, pilotĂ©s par des Data Engines Ndbd et organisĂ©s et ordonnancĂ©s par un manager Ndb_mgmd.

Pour plus d’informations sur le sujet, voir la doc officielle :

http://dev.mysql.com/doc/refman/5.0/en/mysql-cluster-basics.html


Le module NDB est déjà présent dans la version de Mysql disponible sur FreeBSD 5.X.
Les versions Ă  utiliser dans les ports sont mysql41-server ou mysql5x-server.


Le principe de NDB est de fournir un service de synchronisation Ă  MySQL part la mise en place de dĂ©mon de rĂ©plication temps rĂ©el et d’un ordonnanceur.

Contrainte

Dans le cadre de cette mise en oeuvre il est IMPORTANT, pour des soucis de disponibilitĂ©, d’installer le manager de NDB CLUSTER sur une machine diffĂ©rente des dĂ©mons NDBD et MYSQLD.

  • soit installer une troisiĂšme machine
  • soit pauser le manager sur une machine de production proche et accessible sans restrictions d'accĂšs rĂ©seaux.

Remarque : Cette contrainte, n’est pas une obligation mais s’avĂšre IMPORTANTE Ă  prendre en compte pour ne pas responsabiliser une machine plus que l’autre en mode ACTIF/ACTIF sur le cluster.

Cas d'étude

Voici le schéma des machines à mettre en place


Plan d'addressage des serveurs

  • MASTER : (mgm_ndbd) : 192.168.1.1
  • NODE_1 : (MySQLd,NDBd) : 192.168.2.2
  • NODE_2 : (MySQLd,NDBd) : 192.168.2.3

Pré-requis

Installation des trois serveurs en FreeBSD 5.X voir 6.X

Mode opératoire

Mise en place des Ports de MySQL sur les serveurs

Sur les trois machines on va choisir la version 4.1X de MySQL qui supporte le clustering NDB :

On installe donc MySQL avec le module cluster NDB:

 # portinstall -m '-DWITH_NDB' mysql41-server
 # portinstall -P mysql-client

Configuration client mysql

  • Sur les deux serveurs de donnĂ©es :

Tout d’abord ajoutons le mot de passe par defaut de mysql dans le fichier /etc/mysql/my.cnf

 # vi /usr/local/etc/my.cnf
 --
 [
]
 [mysql]
 Password=<SECRET>
 [
]


Quoiqu’il en soit, sur la machine manager :

 # mkdir /var/lib/mysql-cluster
 # vi config.ini
 --
 [NDBD DEFAULT]    
 NoOfReplicas=2    
 DataMemory=80M 
 IndexMemory=18M
 [TCP DEFAULT]     
 portnumber=2202 
 [NDB_MGMD]                      
 hostname=192.168.1.1    # ou l’ip choisit pour un manager sur une machine tierce       
 datadir=/var/lib/mysql-cluster 
 [NDBD]                          
 hostname=192.168.1.2
 datadir=/usr/lib/mysql/
 [NDBD]                          
 hostname=192.168.1.3           
 datadir=/usr/lib/mysql/   
 [MYSQLD]                        
 hostname=192.168.1.2
 [MYSQLD]                        
 hostname=192.168.1.3

Premier démarrage de ndb_mgm

 # ndb_mgm

Cette étape peut prendre du temps ( 10 à 20 secondes).

Edition des configurations MySQL pour les nƓuds de STORAGE NDBd

On modifie la configuration de MySQL pour gĂ©rer le connection au manager et donc au cluster NDB MySQL :
Sur les deux serveurs de donnĂ©es node 1 et 2 :

 # vi /usr/local/etc/mysql/my.cnf
 --
 [...]
 [mysqld]
 Ndbcluster
 Ndb-connectstring=192.168.1.1 # ou l’ip du serveur manager
 [mysql_cluster] 
 Ndb-connectstring=192.168.1.1

Lancement des DataStorage Engine sur les nƓuds

On va maintenant initialiser le cluster, sur les deux serveurs noeuds:

 # mkdir –p /var/lib/mysql 
 # /usr/local/bin/ndbd –initial
 # /usr/local/etc/rc.d/mysql start

Tests

Test de fonctionnement du manager NDB CLUSTER MYSQL

On lance le client du manager NDB CLUSTER MySQL :
Sur la machine manager :

 # ndb_mgm
 -- NDB Cluster -- Management Client --
 ndb_mgm> SHOW
 Connected to Management Server at: localhost:1186
 Cluster Configuration
 ---------------------
 [ndbd(NDB)]     2 node(s)
 id=2    @192.168.1.2   (Version: 4.1.15, Nodegroup: 0, Master)
 id=3    @192.168.1.3   (Version: 4.1.15, Nodegroup: 0)
 [ndb_mgmd(MGM)] 1 node(s)
 id=1    @192.168.1.1   (Version: 4.1.15)
 [mysqld(SQL)]   1 node(s)
 id=4   @192.168.1.2  (Version: 4.1.15)
 id=5   @192.168.1.3 (Version: 4.1.15)

On doit avoir une sortie du type ci-dessus, si il y a des lignes “Not connected”, revĂ©rifiĂ© votre configuration et vos PATH.

Tests de lancement du cluster MySQL

Sur le serveur maĂźtre, on vĂ©rifie l’instance de ndb_mgmd :

 # ps aux|grep ndb_mgmd
 root 5578 0.0 0.3 6220 1964 ? S 03:14 0;00 ndb_mgmd

Sur les deux serveurs on vérifie les instances des ndbd et mysqld

 # ps aux |grep ndbd
 

 # ps aux|grep mysqld 
 


Tests fonctionnels du cluster MySQL

Sur le serveur node 1 :

 # mysql test
 	CREATE TABLE ctest (i int) ENGINE=NDBCLUSTER ;
 	INSERT INTO ctest () VALUES (1);
 	SELECT * FROM ctest;

On doit avoir pour réponse évidente 1.

Sur le serveur node 2 :

 # mysql test
 	INSERT INTO ctest () values (2) ;
  	SELECT * FROM ctest ;

On doit avoir comme réponse les deux lignes 1 ET 2

Sur le serveur node 1 :

 # mysql test
 	SELECT * FROM ctest ;

On doit avoir la mĂȘme rĂ©ponse que sur le serveur node 2.

Finissons notre test en stoppant les mysqld et les ndbd :

 # /usr/local/etc/init.d/mysql-server.sh stop
 # killall ndbd

Mise en place des scripts RC pour ndbd et ndb_mgmd

Récupérée de « http://diablotins.org/index.php/Cluster_MySQL »
Projets :
BoĂźte Ă  outils