mysqld_multi se utiliza para administrar diversos procesos mysqld que esperan conexiones en diferentes archivos socket en Unix y puertos TCP/IP. Puede arrancar o parar servidores, o reportar su estado actual.
El programa busca grupos llamados [mysqld#]
en my.cnf
(o en el fichero nombrado por la
opción --config-file
). #
puede ser cualquier entero positivo. Nos referiremos a este
número como el número del grupo de opciones en la siguiente
discusión, o GNR
(N. del T.:
acrónimo en ingés). Los números de grupo distinguen grupos de
opciones de otros y se usan como argumentos para
mysqld_multi para especificar qué servidores
quiere arrancar, parar, u obtener un reporte de estatus. Las
opciones listadas en esos grupos son las mismas que usaría en
el grupo [mysqld]
para arranacar
mysqld. (Consulte, por ejemplo,
Sección 2.9.2.2, “Arrancar y parar MySQL automáticamente”.) Sin embargo, cuando use
múltiples servidores es necesario que cada uno use su propio
valor para opciones tales como el fichero de socket de Unix y el
número del puerto TCP/IP. Para más información sobre qué
opciones deben ser únicas por servidor en un entorno de
múltiples servidores, consulte
Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina”.
Para invocar mysqld_multi, use la siguiente sintaxis:
shell> mysqld_multi [options
] {start|stop|report} [GNR
[,GNR
]...]
start
, stop
, y
report
indican qué operaciones desea
realizar. Puede realizar la operación designada en un único
servidor o en múltiples servidores, dependiendo de la lista
GNR
que sigue al nombre de la
opción. Si no hay ninguna lista,
mysqld_multi realiza la operación para todos
los servidores en el fichero de opciones.
Cada valor GNR
representa un número
de grupo de opciones o rango de números de grupo. El valor debe
ser un número al final de un nombre de grupo en el fichero de
opciones. Por ejemplo, el GNR
para un
grupo llamado [mysqld17]
es
17
. Para especificar un rango de números,
separe el primero y último número por un guión. El valor
GNR
10-13
reperesenta los grupos desde [mysqld10]
hasta
[mysqld13]
. Multiples grupos o rangos de
grupos pueden especificarse en la línea de comandos, separados
por comas. No deben haber caráceteres de espacios en blanco
(espacios o tabuladores) en la lista+
GNR
; cualquier cosa después de un
carácter de espacio en blanco se ignora.
Este comando arranca un único servidor usando el grupo de
opciones [mysqld17]
:
shell> mysqld_multi start 17
Este comando para diversos servidores, usando los grupos de
opciones [mysql8]
y del
[mysqld10]
hasta el
[mysqld13]
:
shell> mysqld_multi stop 8,10-13
Para un ejemplo sobre cómo puede crear un fichero de opciones, use este comando:
shell> mysqld_multi --example
mysqld_multi soporta las siguientes opciones:
--config-file=
nombre
Especifique el nombre de un fichero de opciones alternativo.
Esto afecta a dónde mysqld_multi busca
grupos de opciones [mysqld#]
. Sin esta
opción todas las opciones se leen del fichero habitual
my.cnf
. La opción no afecta a dónde
mysqld_multi lee sus propias opciones,
que siempre se toman del grupo
[mysqld_multi]
en el fichero habitual
my.cnf
.
Muestra un fichero de opciones de ejemplo..
Muestra un mensaje de ayuda y sale.
Especifica el nombre del fichero de log. Si el fichero existe, la salida de log se añade al mismo.
El binario mysqladmin a usar para parar los servidores.
El binario mysqld a usar. Tenga en cuenta
que puede especificar mysqld_safe como el
valor para esta opción. Las opciones se pasan a
mysqld. Sólo asegúrese que tiene el
directorio donde se encuentra mysqld en
su variable de entorno PATH
o fije
mysqld_safe.
Muestra información del log en el stdout en lugar del fichero de log. Por defecto, la salida va al fichero de log.
La constraseña de la cuenta MySQL a usar cuando invoque mysqladmin. Tenga en cuenta que el valor de la contraseña no es opcional para esta opción, no como en otros programas MySQL.
Desactiva los mensajes de advertencia.
Se conecta a cada servidor MySQL via puerto TCP/IP en lugar
del fichero socket Unix. (Si un fichero socket no se
encuentra, el servidor puede ejecutarse, pero accesible
sólo via puerto TCP/IP.) Por defecto, las conexiones se
hacen usando un fichero socket Unix. Esta opción afecta las
operaciones stop
y
report
.
El nombre de usuario de la cuenta MySQL a usar al invocar mysqladmin.
Es más detallado.
Muestra información sobre la versión y sale.
Apuntes acerca de mysqld_multi:
Asegúrese que la cuenta MySQL usada para parar los
servidores mysqld (con el programa
mysqladmin ) tienen el mismo nombre de
usuario y contraseña para cada servidor. También
asegúrese que la cuenta tiene el privilegio
SHUTDOWN
. Si los servidores que quiere
administrar tienen distintos nombres de usuario o
contraseñas para las cuentas administrativas, puede querer
crear una cuenta en cada servidor que tenga el mismo nombre
de usuario y contraseña. Por ejemplo, puede inicializar una
cuenta común multi_admin
ejecutando el
siguiente comando en cada servidor:
shell> mysql -u root -S /tmp/mysql.sock -proot_password
mysql> GRANT SHUTDOWN ON *.*
-> TO 'multi_admin'@'localhost' IDENTIFIED BY 'multipass';
Consulte Sección 5.6.2, “Cómo funciona el sistema de privilegios”. Tiene que hacerlo
para cada servidor mysqld. Cambie los
parámetros de conexión apropiadamente cuando se conecte a
cada uno. Tenga en cuenta que la parte de servidor del
nombre de la cuenta debe permitirle conectarse como
multi_admin
desde el servidor desde el
que quiere ejecutar mysqld_multi.
La opción --pid-file
es muy importante
si está usando mysqld_safe para arrancar
mysqld (por ejemplo,
--mysqld=mysqld_safe
) Cada
mysqld debe tener su propio fichero con
el ID de proceso. La ventaja de usar
mysqld_safe en lugar de
mysqld es que
mysqld_safe ``guarda'' su proceso
mysqld y lo reinicia si el proceso
termina debido a una señal enviada usando kill
-9
o por otras razones, tales como un segmentation
fault. Por favor, tenga en cuenta que el script
mysqld_safe puede requerir que lo
arranque desde un lugar determinado. Esto significa que
puede tener que cambiar la localización a un cierto
directorio antes de ejecutar
mysqld_multi. Si tiene problemas
arrancando, por favor consulte el script
mysqld_safe. Compruebe especialmente las
líneas:
---------------------------------------------------------------- MY_PWD=`pwd` # Check if we are starting this relative (for the binary release) if test -d $MY_PWD/data/mysql -a -f ./share/mysql/english/errmsg.sys -a \ -x ./bin/mysqld ----------------------------------------------------------------
Consulte Sección 5.1.3, “El script de arranque del servidor mysqld_safe”. Los chequeos realizados por estas líneas deberían tener éxito, o podría encontrar problemas.
El fichero socket de Unix y el puerto TCP/IP deben ser diferentes para cada mysqld.
Puede usar la opción --user
para
mysqld, pero para hacerlo debe ejecutar
el script mysqld_multi como el usuario
root
en Unix. Tener la opción en el
fichero de opciones no importa; sólo obtiene una
advertencia si no es el súper usuario y los procesos
mysqld se inician bajo su propia cuenta
Unix.
Importante: Asegúrese que el directorio de datos es completamente accesible para todas las cuentas Unix con las que puedea iniciarse el proceso mysqld. No use la cuenta root de Unix para ello, a no ser que sepa lo que hace.
Más importante: Antes de usar mysqld_multi aségurese de entender el significado de las opciones que se pasan a los servidores mysqld y porqué quiere tener procesos mysqld separados. Cuidado con los peligros de usar múltipes servidores mysqld con el mismo directorio de datos. Use diferentes directorios de datos, a no ser que sepa lo que hace. Iniciar múltiples servidores con el mismo directorio de datos no proporciona mejor rendimiento en un entorno threaded. Consulte Sección 5.11, “Ejecutar más de un servidor MySQL en la misma máquina”.
El siguiente ejemplo muestra como podría inicializar un fichero
de opciones para usar con mysqld_multi. El
primer y quinto grupo [mysqld#]
se ha omitido
intencionadamente del ejemplo para ilustrar que puede tener
``vacíos'' en el fichero de opciones. Esto proporciona una
mayor flexibilidad. El order en que los programas
mysqld arrancan o se paran depende del order
en que aparecen en el fichero de opciones.
# This file should probably be in your home dir (~/.my.cnf) # or /etc/my.cnf # Version 2.1 by Jani Tolonen [mysqld_multi] mysqld = /usr/local/bin/mysqld_safe mysqladmin = /usr/local/bin/mysqladmin user = multi_admin password = multipass [mysqld2] socket = /tmp/mysql.sock2 port = 3307 pid-file = /usr/local/mysql/var2/hostname.pid2 datadir = /usr/local/mysql/var2 language = /usr/local/share/mysql/english user = john [mysqld3] socket = /tmp/mysql.sock3 port = 3308 pid-file = /usr/local/mysql/var3/hostname.pid3 datadir = /usr/local/mysql/var3 language = /usr/local/share/mysql/swedish user = monty [mysqld4] socket = /tmp/mysql.sock4 port = 3309 pid-file = /usr/local/mysql/var4/hostname.pid4 datadir = /usr/local/mysql/var4 language = /usr/local/share/mysql/estonia user = tonu [mysqld6] socket = /tmp/mysql.sock6 port = 3311 pid-file = /usr/local/mysql/var6/hostname.pid6 datadir = /usr/local/mysql/var6 language = /usr/local/share/mysql/japanese user = jani
É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.