[Summer Camp] Etape 3.2 – MySQLProxy : Split Read/Write

8 October 2011 | par | tuto, unix

Oct
08

Mysql-proxy

Poursuivons le Summer Camp qui devient plus au Autumn Camp… Après la mise en réplication de nos bases de données, on va mettre en place le slipt Read/Write sur nos bases. La base maitre servira pour l’écriture de données et la base slave pour la lecture. Il est à noter que l’on peut ajouter autant e slave que l’on veut. Il suffit de rajouter quelque ligne à la configuration de MySQLProxy. On attaque donc la dernière brique MySQL de la série !

Prérequis :

Nous allons donc utiliser dans ce tuto une machine sous Debian 6 :

  • 1 vCPU
  • 512Mo de RAM
  • Un disque de 8Go pour le système
  • 2 cartes réseau : une sur le VLAN Backend et l’autre sur le VLAN LB-Back

Installation de MySQLProxy et configuration système :

Nous sommes sous Debian et nous avons la chance d’avoir une version de MySQLProxy relativement à jour (à une mineure près…) dans les dépôts. Nous allons donc profiter du système de package ! Pour cela :

root@OAF-PRJ-MYSQLPROXY:~# aptitude install mysql-proxy

Et voilà… C’est tout. Avant de continuer, on va mettre à jour le fichier host du serveur :

root@OAF-PRJ-MYSQLPROXY:~# echo "192.168.20.10         OAF-PRJ-SQL01" >> /etc/hosts
root@OAF-PRJ-MYSQLPROXY:~# echo "192.168.20.11         OAF-PRJ-SQL01" >> /etc/hosts

On passe maintenant à la configuration de MySQLProxy.

Configuration de MySQLProxy :

MySQLProxy utilise des script pour définir sont mode de fonctionnement. Nous allons utiliser un des scripts fourni pour effectuer le split read/write et tout simplement créer un script de lancement.

Le script de lancement sera positionné dans /etc/mysql-proxy/. Pour le reste, ça fonctionne tout seul ! Voilà donc le mode opératoire :

root@OAF-PRJ-MYSQLPROXY:~# mkdir /etc/mysql-proxy/
root@OAF-PRJ-MYSQLPROXY:~# cd /etc/mysql-proxy/
root@OAF-PRJ-MYSQLPROXY:/etc/mysql-proxy# ls
root@OAF-PRJ-MYSQLPROXY:/etc/mysql-proxy# vim rw_launcher.sh
 
#!/bin/bash
#On déclare le master, le slave et le path vers le binaire
MASTERDB=192.168.20.10
SLAVEDB01=192.168.20.11
ROOT_DIR=/usr/share
 
#On déclare le path vers les scripts de configuration
LUA_PATH="$ROOT_DIR/mysql-proxy/?.lua" 
 
#On défini la commande de lancement
/usr/bin/mysql-proxy \
 --daemon \
 --proxy-backend-addresses=$MASTERDB:3306 \
 --proxy-read-only-backend-addresses=$SLAVEDB01:3306 \
 --proxy-lua-script=$ROOT_DIR/mysql-proxy/rw-splitting.lua

Et voilà ! Maintenant, on prépare un petit script de lancement automatique que l’on pose dans /etc/init.d. En fait, on va remplacer le script existant qui pu un peu :

root@OAF-PRJ-MYSQLPROXY:~# cd /etc/init.d/
root@OAF-PRJ-MYSQLPROXY:/etc/init.d# rm mysql-proxy 
root@OAF-PRJ-MYSQLPROXY:/etc/init.d# vim mysql-proxy
 
### BEGIN INIT INFO
# Provides: mysql-proxy
# Required-Start: $syslog
# Required-Stop: $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Lance MySQLProxy
# Description: La meme...
### END INIT INFO
 
start(){
    echo "Demarrage..."
    /etc/mysql-proxy/rw_launcher.sh
}
 
stop(){
    echo "Arret..."
    killall mysql-proxy
}
 
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: mysql-proxy {start|stop|restart}"
exit 1
esac

On l’ajoute aux scripts de lancement automatique au moment du boot (normalement c’est déjà le cas) :

root@OAF-PRJ-MYSQLPROXY:~# insserv mysql-proxy

Et voilà ! Maintenant, il suffit de faire pointer vos applications vers l’IP de cette machine sur le port 4040 (celui de MySQLProxy). Pour vérifier que le service tourne bien, il suffit de voir si cette commande retourne bien une ligne :

root@OAF-PRJ-MYSQLPROXY:~# netstat -tape | grep "4040"
tcp        0      0 *:4040                  *:*                     LISTEN      root       3919        1043/mysql-proxy

A lire aussi :

  1. [Summer Camp] Étape 1 – Frontaux Web (Nginx + PHP5)
  2. [Summer Camp] Etape 3.1 – MySQL Réplication
  3. [Summer Camp] Infra Web Haute Disponibilité
  4. [Summer Camp] Etape 2 – Serveur de Fichiers NFS + ZFS
  5. Intégration Failover Cluster Linux : DRBD + Pacemaker avec LAMP

Rédigé par

IT pro et passionné d'UNIX âgé de 22 ans, je cherche à partager quelques points de vu et mon savoir faire. N'hésitez pas à laisser un commentaire ou votre avis, ça enrichira le débat !

2 réponses to “[Summer Camp] Etape 3.2 – MySQLProxy : Split Read/Write”

Afficher / Masquer les commentaires
  1. [...] un SPOF ! On se calme, l’étape 5 va nous permettre de clusteriser cette brique (et le MySQLProxy aussi ) [...]

Laisser un commentaire