2011-08-10 18 views

Respuesta

1

La declaración principal de esto es mostrar SLAVE STATUS, que debe ejecutar en cada esclavo. Consulte: http://dev.mysql.com/doc/refman/5.1/en/replication-administration-status.html

En el maestro, puede verificar el estado de los esclavos conectados usando SHOW PROCESSLIST para examinar la lista de procesos en ejecución. Para los esclavos que se iniciaron con la opción --report-host y están conectados al maestro, la instrucción SHOW SLAVE HOSTS en el maestro muestra información básica sobre los esclavos.

3

Obtuve la solución en la base de datos information_schema. Por favor, consulte la tabla GLOBAL_STATUS en la base de datos de information_schema. Verá una variable "SLAVE_RUNNING" si está "ON" lo que significa que la replicación funciona bien. Si está "DESACTIVADO", la replicación ha fallado por algún motivo y debe verificar por qué. :-)

Manasi

1

A partir de MySQL 5.6, puede almacenar el estado de esclavos en las tablas en lugar de archivos al iniciar el servidor con --master-info-repository=TABLE y --relay-log-info-repository=TABLE.

Referencia: http://dev.mysql.com/doc/refman/5.6/en/slave-logs.html

Incluso con eso, no estoy seguro de si las tablas contendrán los valores específicos que usted está buscando (SLAVE_IO_RUNNING y SLAVE_SQL_RUNNING). No pude probar esto porque estoy ejecutando mysql 5.1; Estaba buscando y lo encontré en la documentación 5.6.

Parece que está intentando controlar el estado del hilo de forma automática. Dado que no tengo las tablas, tengo la intención de hacer esto con un script de shell y el trabajo de cron, con algo como esto:

$ mysql -u root -pXXXX -e "SHOW SLAVE STATUS\G" | grep Slave_IO_Running | awk '{ print $2 }' 
$ mysql -u root -pXXXX -e "SHOW SLAVE STATUS\G" | grep Slave_SQL_Running | awk '{ print $2 }' 

Referencia: http://www.stardothosting.com/blog/2012/02/checking-and-repairing-mysql-replication-automatically/

1

Esta solución utiliza awk para procesar un espectáculo comando de salida y envía un correo en caso de errores en cualquiera de los campos procesados. En este caso, los campos son Slave_IO_Running y Slave_SQL_Running. Rellene gratis para agregar otros campos desde la salida 'show slave status' - Last_Error/Seconds_Behind_Master por ejemplo o al awk el resultado de otros comandos show.
#!/bin/bash
# get some slave stats
Slave_IO_Running=mysql -u root --password="pwd" -Bse "show slave status\G" | grep Slave_IO_Running | awk '{ print $2 }'
Slave_SQL_Running = mysql -u root --password="pwd" -Bse "show slave status\G" | grep Slave_SQL_Running | awk '{ print $2 }'
Last_Error = mysql -u root --password = "pwd" -Bse "mostrar el estado de esclavo \ G" | grep Last_error | awk -F: '{print $ 2}'

if [$ Slave_SQL_Running == 'No'] || [$ Slave_IO_Running == 'No'];
luego
echo "Último error:" $ Last_error | mail -s "Error de replicación en slavedb !!!" [email protected]
fi

salida 0

+0

los pls describen su solución –

+0

según lo solicitado, los pls consideran arriba – ninjabber

+0

Gracias por compartir esto. Propuesta de mejora: obtenga el estado solo una vez y haga el resto localmente. Además, sugiero usar "grep -i" para grep insensible a mayúsculas y minúsculas. En mi servidor ejecutando mysql 5.6 "Last_Error" tiene letra mayúscula E. –

10

Ésta es la afirmación de que he utilizado según la respuesta de la parte superior Manasi.

SELECT variable_value 
FROM information_schema.global_status 
WHERE variable_name='SLAVE_RUNNING'; 
0

Puede ejecutar el 'SHOW SLAVE STATUS; consulta en cada servidor esclavo y obtener el resultado. También puede escribir un script que ejecutará la consulta a intervalos regulares.

Además puede utilizar herramientas como Monyog, como yo, que tienen asesores que supervisarán los servidores de replicación y proporcionarán los resultados dentro de los intervalos de tiempo establecidos. También tiene una página de replicación, que brinda más información para los servidores en la configuración de replicación y proporciona una función de alerta si el esclavo no se está ejecutando.

Cuestiones relacionadas