junio 2010


La instalación y configuración básica de un servidor MySQL no es nada complicada, leyendo la documentación online o algún que otro tutorial se puede conseguir en unos minutos. Sin embargo, las distintas opciones de configuración que nos ofrece MySQL hacen que dominar completamente la configuración de dicho servidor requiera más tiempo y dedicación.

En este post voy a mostrar cómo instalar, configurar y administrar tres instancias completamente independientes del servidor MySQL en la misma máquina. Ya que en el anterior post de instalación de MySQL mostré la instalación con apt-get, esta vez voy a mostrar la instalación descargando los fuentes para su posterior compilación.

Lo primero que hay que hacer es descargar los ficheros con el código fuente del servidor de la página de descargas de MySQL. Una vez descargados, hay que descomprimirlos y entrar en la carpeta que se acaba de crear para poder ejecutar el comando de compilación:

#creación de la carpeta que contendrá los binarios y las bases de datos
mkdir /root/mysql_multi
#compilación e instalación personalizada de la primera instancia de MySQL para utilizar el puerto 3307, la carpeta que acabamos de crear como directorio base y la carpeta /root/mysql_multi/var/ como directorio que contendrá las bases de datos.
./configure –with-tcp-port=3307 –with-unix-socket-path=/root/mysql_multi/mysql_1.sock –prefix=/root/mysql_multi/ –localstatedir=/root/mysql_multi/var/
make
make install

El siguiente paso es crear las carpetas que utilizarán las otras dos instancias de MySQL para guardar las bases de datos:

cd /root/mysql_multi/
mkdir var # ya está creada en instalación
mkdir var2
mkdir var3

Ahora hay que inicializar la estructura de las bases de datos utilizada por cada instancia de MySQL:

/root/mysql_multi/bin/mysql_install_db –user=mysql –basedir=/root/mysql_multi/ –datadir=/root/mysql_multi/var/
/root/mysql_multi/bin/mysql_install_db –user=mysql –basedir=/root/mysql_multi/ –datadir=/root/mysql_multi/var2/
/root/mysql_multi/bin/mysql_install_db –user=mysql –basedir=/root/mysql_multi/ –datadir=/root/mysql_multi/var3/

Establecer el password de root para las tres instancias. Para lo cual hay que arrancar el servidor y luego conectarse con mysqladmin:

/root/mysql_multi/bin/mysqld_safe –socket=/root/mysql_multi/mysql_1.sock –port=3307 –datadir=/root/mysql_multi/var/ &
/root/mysql_multi/bin/mysqladmin -u root password ‘changeme’
killall mysqld

/root/mysql_multi/bin/mysqld_safe –socket=/root/mysql_multi/mysql_2.sock –port=3308 –datadir=/root/mysql_multi/var2/ &
/root/mysql_multi/bin/mysqladmin -u root password ‘changeme’
killall mysqld

/root/mysql_multi/bin/mysqld_safe –socket=/root/mysql_multi/mysql_3.sock –port=3309 –datadir=/root/mysql_multi/var3/ &
/root/mysql_multi/bin/mysqladmin -u root password ‘changeme’
killall mysqld

En este momento ya están las tres instancias de MySQL listas para funcionar. El siguiente paso es crear un archivo de configuración que nos permita manejar estas tres instancias de una forma cómoda y simple.

#Archivo de configuración /root/mysql_multi/my_multi.cnf
[mysqld_multi]
#valores por defecto para las tres instancias de MySQL
mysqld     = /root/mysql_multi/bin/mysqld_safe
mysqladmin = /root/mysql_multi/bin/mysqladmin
user       = root
password   = changeme

#instancia 1
[mysqld1]
socket     = /root/mysql_multi/mysql_multi.sock
port       = 3307
pid-file   = /root/mysql_multi/var/alberto.pid
datadir    = /root/mysql_multi/var/
language   = /root/mysql_multi/share/mysql/english
user       = mysql

#instancia 2
[mysqld2]
socket     = /root/mysql_multi/mysql_2.sock
port       = 3308
pid-file   = /root/mysql_multi/var2/alberto.pid
datadir    = /root/mysql_multi/var2/
language   = /root/mysql_multi/share/mysql/english
user       = mysql

#instancia 3
[mysqld3]
socket     = /root/mysql_multi/mysql_3.sock
port       = 3309
pid-file   = /root/mysql_multi/var3/alberto.pid
datadir    = /root/mysql_multi/var3/
language   = /root/mysql_multi/share/mysql/english
user       = mysql

Una vez creado este archivo podemos utilizar el programa mysqld_multi para manejar nuestras instancias:

/root/mysql_multi/bin/mysqld_multi –defaults-file=/root/mysql_multi/my_multi.cnf report
/root/mysql_multi/bin/mysqld_multi –defaults-file=/root/mysql_multi/my_multi.cnf start 2

El acceso con los clientes sería de la siguiente manera:

#Utilizando el socket UNIX
mysql -u root -pchangeme -S /root/mysql_multi/mysql_multi.sock
#utilizando el puerto TCP para restaurar un backup
mysql -u root -pchangeme -h 127.0.0.1 -P 3308 esquema < backaup.sql &

¿Algunas recomendaciones extras?

  • Lo primero es no utilizar el usuario root para la instalación y ejecución del servidor MySQL. Yo lo he utilizado para no complicar más la instalación.
  • Para encontrar información adicional sobre el manejo de múltiples instancias de MySQL es recomendable leer la documentación oficial sobre la instalación de múltiples instancias de MySQL en la misma máquina o la utilización de mysqld_multi.
  • Este howto se puede adaptar para utilizar diferentes versiones de MySQL, yo he utilizado la misma versión en las tres instancias para no complicar demasiado la explicación.
  • Recordad que si algo no funciona cuando todos los archivos de configuración parecen estar bien, siempre es un problema de permisos.
  • Es posible que las herramientas gráficas de administración de MySQL ignoren momentáneamente el puerto y se conecten a la primera instancia de MySQL. Para solucionarlo le tenemos que decir dónde se encuentra el socket UNIX de la instancia en cuestión.
MySQL Administrator

Especificando el socket UNIX en MySQL Administrator

Espero que el artículo os haya gustado. Hasta pronto.

Hace bastante tiempo que no escribo ninguna entrada en el blog. Básicamente se debe a que los últimos meses he tenido un nivel frenético de trabajo. Parece que con la llegada del verano se van recogiendo los frutos de estos meses y además tengo algo de tiempo libre.

La semana pasada tuve la oportunidad de estar unos días en Atenas con motivo del Kickoff del proyecto europeo VOA3R. Dicho proyecto todavía está empezando y mi tarea dentro de él no está muy clara. Mi principal aportación durante la reunión fue explicar el funcionamiento del portal de organic.edunet. Es presumible que el portal del proyecto de VOA3R reutilice algunas de las tecnologías desarrolladas para el portal de organic.edunet a sí que la presentación de este portal a los socios del proyecto pareció una buena idea para que vayan viendo la forma que podría tener el resultado de VOA3R.

Reunión de VOA3R

Reunión de VOA3R

Aparte de las reuniones, también pude disfrutar de un agradable paseo por Atenas durante el tiempo libre. Esta es la segunda vez que visito esta ciudad (en realidad he estado tres veces pero una de ellas no tuve tiempo de ver nada) y cada vez quedo más encantado por las bonitas vistas que ofrece Atenas. Aprovecho también para comentar que hay grandes avances en el proceso de restauración de la Acrópolis que hacen obligatoria su visita aunque ya se haya visitado anteriormente. Os dejo algunas de estas bonitas vistas:

Acropolis

Vista frontal de la acrópolis

cariatides

Vista lateral del erecteión con las cariátides

Partenón

Vista principal del Partenón