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
More From MadeInSyria
A lire aussi :
[...] MySQL Proxy : Split Read/Write [...]
[...] un SPOF ! On se calme, l’étape 5 va nous permettre de clusteriser cette brique (et le MySQLProxy aussi ) [...]