MySQL Multi
NOTA: Página en construcción aún.
Contenido
Introducción a MySQL Multi
En un mismo servidor se pueden tener múltiples instancias de MySQL. En general estas instancias deberían apuntar a distintos repositorios de datos (varias a un mismo repositorio de datos lo único que trae es problemas). Esto permitiría poder manejar el prendido y apagado de cada instancia en forma independiente. Otra ventaja que permite tener varias instancias, es dejar que cada usuario maneje su propia instancia de MySQL.
MySQL proporciona el comando mysqld_multi para manejar múltiples instancias. Además, en el archivo my.cnf es que se configuran las instancias. El my.cnf general se pone en /etc, y los archivos my.cnf por usuario, pueden ir en ~/.my.cnf.
Para que funcionen como demonios las instancias, y se inicien, se debe colocar el demonio mysqld_multi en /etc/init.d (distribuciones RedHat).
Archivo /etc/init.d/mysqld_multi
Archivo copiado de la distribución de MySQL disponible en el repositorio de CentOS-Plus. Sólo se ha modificado la línea basedir según se necesite. En este y demás ejemplos se utilizará /mysqldata como directorio base para la data del MySQL.
#!/bin/sh
#
# A simple startup script for mysqld_multi by Tim Smith and Jani Tolonen.
# This script assumes that my.cnf file exists either in /etc/my.cnf or
# /root/.my.cnf and has groups [mysqld_multi] and [mysqldN]. See the
# mysqld_multi documentation for detailed instructions.
#
# This script can be used as /etc/init.d/mysql.server
#
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.
#
# Version 1.0
#
basedir=/mysqldata
bindir=/usr/bin
if test -x $bindir/mysqld_multi
then
mysqld_multi="$bindir/mysqld_multi";
else
echo "Can't execute $bindir/mysqld_multi from dir $basedir";
exit;
fi
case "$1" in
'start' )
"$mysqld_multi" start $2
;;
'stop' )
"$mysqld_multi" stop $2
;;
'report'|'status' )
"$mysqld_multi" report $2
;;
'restart' )
"$mysqld_multi" stop $2
"$mysqld_multi" start $2
;;
*)
echo "Uso: $0 {start|stop|report|status|restart}" >&2
;;
esac
Recordar desactivar el demonio normal de MySQL y activar este después de copiarlo.
# chkconfig mysqld off
# chkconfig --add mysqld_multi
# chkconfig mysqld_multi on
Archivo my.cnf
Se puede generar un archivo ejemplo ejecutando:
# mysqld_multi --example
La primera parte del archivo debe ser:
[mysqld_multi]
mysqld = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user = multi_admin
password = multipass
Luego se agregan las entradas de las distintas instancias. Las instancias se deben numerar.