Instances MySQL "jetables"

Quand on veut faire des tests sur un service, il est intéressant d’avoir des procédures d’installation rapide pour pouvoir faire des tests, tout casser, tout réinstaller et recommencer. On peut se créer des machines virtuelles VirtualBox (ou autres systèmes de virtualisation) et redéployer sans cesse des copies. Cependant pour MySQL il existe une solution encore plus simple : MySQL Sandbox qui permet de déployer des instances multiples de MySQL sur un serveur.  

Installation

Récupération des sources (Sandbox et différentes versions de MySQL) :
# cd /usr/src
# wget http://launchpad.net/mysql-sandbox/mysql-sandbox-3/mysql-sandbox-3/+download/MySQL-Sandbox-\
3.0.17.tar.gz
# wget ftp://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.89-linux-x86_64-glibc23.tar.gz
# wget ftp://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.1/mysql-5.1.53-linux-x86_64-glibc23.tar.gz
# wget ftp://mirrors.ircam.fr/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.8-linux2.6-x86_64.tar.gz
Installation SandBox :
# apt-get install build-essential
# tar xvzf MySQL-Sandbox-3.0.17.tar.gz
# cd MySQL-Sandbox
# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for MySQL::Sandbox
# make
# make install
   

Création d’une instance MySQL

# make_sandbox /usr/src/mysql-5.0.89-linux-x86_64-glibc23.tar.gz
MySQL Sandbox should not run as root

If you know what you are doing and want to
run as root nonetheless, please set the environment
variable 'SANDBOX_AS_ROOT' to a nonzero value

# export SANDBOX_AS_ROOT='1'
unpacking /usr/src/mysql-5.0.89-linux-x86_64-glibc23.tar.gz
Executing low_level_make_sandbox --basedir=/usr/src/5.0.89 \
        --sandbox_directory=msb_5_0_89 \
        --install_version=5.0 \
        --sandbox_port=5089 \
        --no_ver_after_name \
        --my_clause=log-error=msandbox.err
    The MySQL Sandbox,  version 3.0.17
    (C) 2006-2010 Giuseppe Maxia
installing with the following parameters:
upper_directory                = /root/sandboxes
sandbox_directory              = msb_5_0_89
sandbox_port                   = 5089
check_port                     =
no_check_port                  =
datadir_from                   = script
install_version                = 5.0
basedir                        = /usr/src/5.0.89
tmpdir                         =
my_file                        =
operating_system_user          = root
db_user                        = msandbox
remote_access                  = 127.%
ro_user                        = msandbox_ro
rw_user                        = msandbox_rw
repl_user                      = rsandbox
db_password                    = msandbox
repl_password                  = rsandbox
my_clause                      = log-error=msandbox.err
prompt_prefix                  = mysql
prompt_body                    =  [\h] {\u} (\d) >
force                          =
no_ver_after_name              = 1
verbose                        =
load_grants                    = 1
no_load_grants                 =
no_run                         =
no_show                        =
do you agree? ([Y],n) y
loading grants
. sandbox server started
Your sandbox server was installed in $HOME/sandboxes/msb_5_0_89
On se retrouve donc avec un nouveau serveur mysql :
# netstat -tpnl | grep mysql
tcp        0      0 0.0.0.0:5089            0.0.0.0:*               LISTEN      3498/mysqld
  Pour y accéder
# /root/sandboxes/msb_5_0_89/use
Pour stopper l’instance
# /root/sandboxes/msb_5_0_89/stop
Pour la démarrer
# /root/sandboxes/msb_5_0_89/start
Pour la configurer :
# vi /root/sandboxes/msb_5_0_89/my.sandbox.cnf
Les data
# ls /root/sandboxes/msb_5_0_89/data/
   

Installer une seconde instance

# make_sandbox /usr/src/mysql-5.1.53-linux-x86_64-glibc23.tar.gz

# netstat -tpnl | grep mysql
tcp        0      0 0.0.0.0:5153            0.0.0.0:*               LISTEN      3743/mysqld
tcp        0      0 0.0.0.0:5089            0.0.0.0:*               LISTEN      3584/mysqld
   

Importer un fichier SQL dans une instance

# cd /root/sandboxes/msb_5_0_89/
# ./use -e 'create database world character set utf8;'
# ./use world < tmp/world.sql
 

 

Supprimer une instance

# cd /root/sandboxes/msb_5_0_89/
# ./stop
# cd ..
# rm -rf msb_5_0_89/
   

Mettre en place une architecture de replication maitre > esclaves

# make_replication_sandbox /usr/src/mysql-5.5.8-linux2.6-x86_64.tar.gz
installing and starting master
installing slave 1
installing slave 2
starting slave 1
.. sandbox server started
starting slave 2
... sandbox server started
initializing slave 1
initializing slave 2
replication directory installed in $HOME/sandboxes/rsandbox_5_5_8
Ce qui crée une architecture 1 maître / 2 esclaves (node1 et node2)    

Conclusion

Voici donc une bonne « boîte à outils » pour tester de multiples configurations de serveurs MySQL. Pour une documentation plus complète : http://search.cpan.org/~gmax/MySQL-Sandbox-3.0.17/lib/MySQL/Sandbox/Recipes.pm

Laisser un commentaire


NOTE - Vous pouvez utiliser les éléments et attributs HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <font color="" face="" size=""> <span style="">