MySQL SandBox, el mejor entorno de pruebas

Juguetear con MySQL es divertido, pero la preparación de los distintos servidores un coñazo. Distintos sockets, distintos puertos, establecer los usuarios y permisos… Existe una utilidad para convertir MySQL en una zona de juego, SandBox:

Sandbox

Esta herramienta te permite por ejemplo, mediante un simple comando, crear una estructura de replicación circular con 20 servidores MySQL :P

Instalación

Hacen falta dos cosas, SandBox y un tar.gz con los binarios de Mysql (que se descargan de la propia web de MySQL). Una vez que lo tenemos, procedemos a instalar SandBox:

Como Root:

perl Makefile.PL
make
make test
make install

Como Usuario:

export PATH=$HOME/usr/local/bin:$PATH
export PERL5LIB=$HOME/usr/local/lib/perl5/site_perl/5.8.8
perl Makefile.PL PREFIX=$HOME/usr/local
make
make test
make install

Puesta en marcha

Imaginemos que queremos montar un sistema de replicación con un maestro y 10 esclavos :) Lo que antes era un infierno ahora se resume en:

make_replication_sandbox --how_many_slaves=10 /tmp/mysql-5.1.37-linux-i686-glibc23.tar.gz
installing and starting master
installing slave 1
installing slave 2
installing slave 3
installing slave 4
[...]
replication directory installed in $HOME/sandboxes/rsandbox_5_1_37

Listo!

Para ejecutar un comando en todos los servidores:

/home/sandboxes/use_all "show databases"
master
Database
information_schema
mysql
test
server: 1:
Database
information_schema
mysql
test
...

Cada MySQL escucha en un puerto y tiene un socket propio. Los puestos los podeis saber con un simple netstat:

[punisher@miguel sandboxes]$ netstat -putan
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:23552 0.0.0.0:* LISTEN 9986/mysqld
tcp 0 0 0.0.0.0:23553 0.0.0.0:* LISTEN 10609/mysqld
tcp 0 0 0.0.0.0:23554 0.0.0.0:* LISTEN 10706/mysqld
tcp 0 0 0.0.0.0:23555 0.0.0.0:* LISTEN 10803/mysqld
tcp 0 0 0.0.0.0:23556 0.0.0.0:* LISTEN 10900/mysqld
tcp 0 0 0.0.0.0:23557 0.0.0.0:* LISTEN 10998/mysqld
tcp 0 0 0.0.0.0:23558 0.0.0.0:* LISTEN 11096/mysqld
tcp 0 0 0.0.0.0:23559 0.0.0.0:* LISTEN 11194/mysqld
tcp 0 0 0.0.0.0:23560 0.0.0.0:* LISTEN 11292/mysqld
tcp 0 0 0.0.0.0:23561 0.0.0.0:* LISTEN 11389/mysqld
tcp 0 0 0.0.0.0:23562 0.0.0.0:* LISTEN 11487/mysqld

Para saber los sockets:

[punisher@miguel ~]$ ls -la /tmp/mysql_sandbox235*

srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23552.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23553.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23554.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23555.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23556.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23557.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23558.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23559.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23560.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23561.sock
srwxrwxrwx 1 punisher users 0 sep 7 16:44 /tmp/mysql_sandbox23562.sock
Para pararlos/arrancar todos:

$HOME/sandboxes/start_all $HOME/sandboxes/stop_all

Para acceder a uno en particular:

Con la herramienta mysql (clave de root msandbox) o mediante unos script:

$HOME/sandboxes/rsandbox_5_1_37/m (master)
$HOME/sandboxes/rsandbox_5_1_37/s1 (slave 1)
$HOME/sandboxes/rsandbox_5_1_37/s2 (slave 2)
etc.


Comments

  1. Holas buenas una consulta, llevo ya 4 dias en esto y no logro nada, tendras alguna manera detallada para lograrlo?? lo que quiero es algo sencillo montar unos 10 servidores y nada mas... estoy siguiendo este manual http://www.linux-mag.com/id/7442/ pero tampoco lo logro... estoy al borde la locura si pudieras ayudarme te agradeceria muchisimo.

    Pedro on
  2. Mejor lee la documentación oficial:

    http://search.cpan.org/~gmax/MySQL-Sandbox-3.0.24/lib/MySQL/Sandbox.pm

    También tienes esta presentación (la calidad de la imagen no es muy buena):

    http://www.youtube.com/watch?v=EVf_2cc-gME

    Miguel Angel Nieto on