[+/-]
En algunos casos, podría querer ejecutar múltiples servidores mysqld en la misma máquina. Quizá quiera probar una nueva versión de MySQL dejando la configuración de producción sin cambios. O quizá quiera dar acceso para diferentes usuarios a diferentes servidores mysqld que ellos mismos puedan administrar. (Por ejemplo, podría ser un proeedor de servicios de Internet que proporcione instalaciones de MySQL independientes para cada cliente.)
Para ejecutar múltiples servidores en una única máquina, cada servidor tiene que tener valores únicos para los diferentes parámetros de operación. Estos se pueden establecer en la línea de comandos o en archivos de opciones. Consulte Sección 4.3, “Especificar opciones de programa”.
Al menos las siguientes opciones deben ser diferentes para cada servidor:
--port=
port_num
--port
controla el número de puerto de las
conexiones TCP/IP.
--socket=
path
--socket
controla la ruta del archivo
socket de Unix y el nombre de la named pipe en Windows. En
Windows, es necesario especificar diferentes nombres de pipe
solo para los servidores que soporten conexiones mediante
named pipe.
--shared-memory-base-name=
name
Esta opción, actualmente, se utiliza sólo en Windows. Designa el nombre de memoria compartida utilizado por un servidor Windows para permitir a los clientes conectarse mediante memoria compartida.
--pid-file=
path
Esta opción se utiliza únicamente en Unix. Indica el nombre del archivo en el que el servidor escribe su ID de proceso.
Si utiliza las siguientes opciones de archivo de registro, deben ser diferentes para cada servidor:
--log=
path
--log-bin=
path
--log-update=
path
--log-error=
path
--bdb-logdir=
path
Las opciones de archivo de registro se explican en Sección 5.10.5, “Mantenimiento de ficheros de registro (log)”.
Para un mejor rendimiento, puede especificar las siguientes opciones a cada servidor, de manera que se distribuya la carga entre discos físicos:
--tmpdir=
path
--bdb-tmpdir=
path
Tener diferentes directorios temporales también es una buena práctica, para hacer más fácil determinar qué servidor MySQL creó cualquier archivo temporal.
Generalmente, cada servidor debería utilizar un directorio de
datos diferente, lo que se especifica con la opción
--datadir=path
.
Atención: Normalmente no
debería tener dos servidores que actualicen los datos de la misma
base de datos. Esto podría llevar a obtener sorpresas indeseadas
si su sistema operativo no tiene soporte para bloqueos sin
posibilidad de fallo. Si (a pesar de este aviso) ejecuta
múltiples servidores que utilicen el mismo directorio de datos y
tienen el registro activado, debería utilizar las opciones
adecuadas para especificar nombres de archivos de registro que
sean únicos para cada servidor. De otra manera, lo servidores
intentan registrar en los mismos archivos. Por favor, tengan
cuenta que este tipo de configuración sólo funciona con tablas
MyISAM
y MERGE
, y no con
ningún otro de los motores de almacenamiento.
Este aviso en contra de compartir un directorio de datos entre servidores también se aplica en entornos NFS. Permitir que múltiples servidores MySQL accedan a un directorio común es una muy mala idea.
El principal problema es que NFS es un cuello de botella de velocidad. No está diseñado para un uso tal.
Otro riesgo con NFS es que tiene que encontrar una manera de
asegurarse que dos o más servidores no se interfieran unos
con otros. Usualmente, el bloqueo de archivos de NFS está
gestionado por el demonio lockd
, pero de
momento no hay ninguna plataforma que realice bloqueos 100%
seguros en todas las situaciones.
Facilítese las cosas: Olvídese de compartir un directorio de datos entre servidores sobre NFS. Una solución mejor es tener una máquina que tenga diferentes CPUs y utilizar un sistema operativo que gestione los hilos de ejecución eficientemente.
Si tiene múltiples instalaciones de MySQL en diferentes lugares,
normalmente puede especificar el directorio base de instalación
para cada uno con la opción --basedir=path
, de
manera que cada servidor utilice un directorio de datos, archivo
de registro, y archivo de PID diferentes. (Los valores por defecto
de todos ellos son determinados en relación al directorio base).
En ese caso, las únicas opciones adicionales que necesita
especificar son las opciones --socket
y
--port
. Por ejemplo, suponga que debe instalar
diferentes versiones de MySQL utilizando distribuciones binarias
en archivos tar
. Se instalan en diferentes
lugares, así que puede iniciar el servidor de cada instalación
utilizando el comando bin/mysqld_safe bajo su
correspondiente directorio base. ¡mysqld_safe
determina la opción --basedir
apropiada para
pasarle a mysqld, y usted sólo necesita
especificar las opciones --socket
y
--port
a mysqld_safe.
Tal como se explica en las siguientes secciones, es posible iniciar servidores adicionales mediante el establecimiento de sus variables de entorno, o especificando opciones de línea de comandos apropiadas. Aún así, si necesita ejecutar servidores múltiples de manera permanente, es más conveniente utilizar archivos de opciones para especificar a cada servidor las opciones que deben ser únicas para él.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.