Diferencia entre revisiones de «MySQL Multi»

De FJWiki
Saltar a: navegación, buscar
Línea 9: Línea 9:
  
 
== Archivo <tt>/etc/init.d/mysqld_multi</tt> ==
 
== Archivo <tt>/etc/init.d/mysqld_multi</tt> ==
Archivo copiado de la distribución de MySQL disponible en el repositorio de ''CentOS-Plus''.
+
Archivo copiado de la distribución de MySQL disponible en el repositorio de ''CentOS-Plus''. Sólo se ha modificado la línea <tt>basedir</tt> según se necesite. En este y demás ejemplos se utilizará <tt>/mysqldata</tt> como directorio base para la data del MySQL.
 
<source lang="bash">
 
<source lang="bash">
 
#!/bin/sh
 
#!/bin/sh
Línea 27: Línea 27:
 
#
 
#
  
basedir=/srv/mysqldata
+
basedir=/mysqldata
 
bindir=/usr/bin
 
bindir=/usr/bin
  

Revisión del 21:06 13 nov 2008

NOTA: Página en construcción aún.

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.

Agregando una instancia de mysql

Agregando la configuración de la nueva instancia

Ver también