Por defecto, la herramienta trae opciones preestablecidas para la creación de varios servidores MySQL independientes con una única orden, creación de sistemas de replicación, creación a partir de código fuente, binarios, etc.
La instalación de MySQL Sandbox es sencilla, podemos descargarnos el tarball y seguir los pasos de la instalación o descargarlo directamente desde CPAN como módulo de Perl:
# cpan cpan shell -- CPAN exploration and modules installation (v1.9205) ReadLine support available (maybe install Bundle::CPAN or Bundle::CPANxxl?) cpan> install MySQL::Sandbox
Una vez instalado, hemos de revisar las opciones de creación:
$ sandbox The MySQL Sandbox, version 3.0.04 (C) 2006,2007,2008,2009 Giuseppe Maxia available applications: make_sandbox : the easiest way of creating a sandbox low_level_make_sandbox : create a single sandbox, with fine tuning options (don't use directly) make_replication_sandbox : creates a sandbox with replicated master and slaves or circular make_multiple_sandbox : creates a group of sandboxes with the same version make_multiple_custom_sandbox : create a group of sandboxes with different versions make_sandbox_from_source : create a sandbox from a build directory make_sandbox_from_installed : create a sandbox from already installed binaries sbtool : performs auxiliary actions with existing sandboxes
Para crear una instancia de servidor MySQL básica, simplemente tenemos que descargarnos la versión que queramos de MySQL. Vamos a crear por ejemplo una sandbox de la versión 5.4.1:
wget http://dev.mysql.com/get/Downloads/MySQL-5.4/mysql-5.4.1-beta-linux-i686-glibc23.tar.gz/from/http://mysql.rediris.es/
Una vez descargado, la forma más sencilla de crear la sandbox con MySQL 5.4.1 es la siguiente:
$ make_sandbox mysql-5.4.1-beta-linux-i686-glibc23.tar.gz unpacking /home/alex/mysql-5.4.1-beta-linux-i686-glibc23.tar.gz Executing low_level_make_sandbox --basedir=/home/alex/5.4.1 \ --sandbox_directory=msb_5_4_1 \ --install_version=5.4 \ --sandbox_port=5410 \ --no_ver_after_name \ --my_clause=log-error=msandbox.err The MySQL Sandbox, version 3.0.04 (C) 2006,2007,2008,2009 Giuseppe Maxia installing with the following parameters: upper_directory = /home/alex/sandboxes sandbox_directory = msb_5_4_1 sandbox_port = 5410 check_port = 0 no_check_port = 0 datadir_from = script install_version = 5.4 basedir = /home/alex/5.4.1 my_file = operating_system_user = alex db_user = msandbox db_password = msandbox my_clause = log-error=msandbox.err prompt_prefix = mysql prompt_body = [\h] {\u} (\d) > ' force = 0 no_ver_after_name = 1 verbose = 0 load_grants = 1 no_load_grants = 0 no_show = 0 do you agree? ([Y],n) Y 090716 19:46:44 [Warning] Forcing shutdown of 2 plugins 090716 19:46:44 [Warning] Forcing shutdown of 2 plugins loading grants .................. sandbox server started Your sandbox server was installed in $HOME/sandboxes/msb_5_4_1
Simplemente hay que ejecutar la orden que queramos seguida del fichero tarball que contiene la versión MySQL a instalar (podríamos hacer una sandbox sencilla como este caso, o crear replicaciones, etc). Como véis, antes de instalarla y arrancarla nos pide confirmación e informa del lugar en el que instala todas las sandboxes, la carpeta en la que se alojará la versión que estamos instalando, etc.
Dentro de la carpeta «sandboxes», encontraréis todos los scripts necesarios para arrancar, parar y realizar acciones con las sandboxes, además de las carpetas que contienen cada una de ellas:
rwxr-xr-x 1 alex alex 2,1K 2009-07-16 19:46 sandbox_action -rwxr-xr-x 1 alex alex 57 2009-07-16 19:46 use_all -rwxr-xr-x 1 alex alex 58 2009-07-16 19:46 stop_all -rwxr-xr-x 1 alex alex 59 2009-07-16 19:46 start_all -rwxr-xr-x 1 alex alex 63 2009-07-16 19:46 send_kill_all -rwxr-xr-x 1 alex alex 61 2009-07-16 19:46 restart_all -rwxr-xr-x 1 alex alex 59 2009-07-16 19:46 clear_all drwxr-xr-x 3 alex alex 4,0K 2009-07-16 19:46 msb_5_4_1
Dentro de las carpetas de cada sandbox, podéis hacer las mismas acciones pero únicamente para dicha sandbox:
:~/sandboxes/msb_5_4_1$ l total 60K -rwxr-xr-x 1 alex alex 1,5K 2009-07-16 19:46 stop -rwxr-xr-x 1 alex alex 1,8K 2009-07-16 19:46 start -rwxr-xr-x 1 alex alex 1,4K 2009-07-16 19:46 send_kill -rwxr-xr-x 1 alex alex 881 2009-07-16 19:46 restart -rw-r--r-- 1 alex alex 1,6K 2009-07-16 19:46 my.sandbox.cnf -rwxr-xr-x 1 alex alex 917 2009-07-16 19:46 load_grants -rwxr-xr-x 1 alex alex 1,7K 2009-07-16 19:46 clear -rw-r--r-- 1 alex alex 51 2009-07-16 19:46 USING -rwxr-xr-x 1 alex alex 1,3K 2009-07-16 19:46 use -rwxr-xr-x 1 alex alex 923 2009-07-16 19:46 proxy_start -rwxr-xr-x 1 alex alex 1,8K 2009-07-16 19:46 my -rw-r--r-- 1 alex alex 187 2009-07-16 19:46 grants.mysql -rwxr-xr-x 1 alex alex 1,5K 2009-07-16 19:46 change_ports -rwxr-xr-x 1 alex alex 1,7K 2009-07-16 19:46 change_paths drwx------ 4 alex alex 4,0K 2009-07-16 19:47 data
con el comando «use» podemos acceder al cliente MySQL para gestionar la sandbox:
~/sandboxes/msb_5_4_1$ ./use Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.4.1-beta MySQL Community Server (GPL) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql [localhost] {msandbox} ((none)) > show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) mysql [localhost] {msandbox} ((none)) >
Bien, esto es lo más básico para comenzar a utilizar esta genial herramienta, mención especial merece también el comando sbtool, que permite realizar acciones extras con las sandboxes, podéis verlas a continuación:
$ sbtool --help usage: /usr/local/bin/sbtool [options] -o --operation (s) - what task to perform 'info' returns configuration options from a Sandbox 'tree' creates a replication tree 'move' moves a Sandbox to a different location 'unpreserve' makes a sandbox NOT permanent 'range' finds N consecutive ports not yet used by the Sandbox 'port' Changes a Sandbox port 'copy' copies data from one Sandbox to another 'ports' lists ports used by the Sandbox 'delete' removes a sandbox completely 'preserve' makes a sandbox permanent -s --source_dir (s) - source directory for move, copy, delete -d --dest_dir (s) - destination directory for move,copy -n --new_port (s) - new port while moving a sandbox -u --only_used (-) - for "ports" operation, shows only the used ones -i --min_range (i) - minimum port when searching for available ranges -x --max_range (i) - maximum port when searching for available ranges -z --range_size (i) - size of range when searching for available port range -f --format (s)