Estado del slave en MySQL

Cuando tenemos montado un base de datos MySQL con una arquitectura master-slave, nos interesa conocer el estado de la replicación.

En este artículo veremos los parámetros que nos devuelve el comando "SHOW SLAVE STATUS".

 Ejecutamos este comando seguido del caracter "\G" en lugar de "punto y coma" para obtener una salida vertical más legible:

mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: localhost
Master_User: root
Master_Port: 3306
Connect_Retry: 3
Master_Log_File: gbichot-bin.005
Read_Master_Log_Pos: 79
Relay_Log_File: gbichot-relay-bin.005
Relay_Log_Pos: 548
Relay_Master_Log_File: gbichot-bin.005
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 79
Relay_Log_Space: 552
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 8

 

Slave_IO_State

Una copia del campo State se la salida de SHOW PROCESSLIST para el flujo esclavo de entrada/salida. Le dice si el flujo está tratando de conectar con el maestro, esperando eventos del maestro, reconectando con el maestro, etc. Los estados posibles se listan en Sección 6.3, “Detalles de la implementación de la replicación”. Consultar este campo es necesario porque, por ejemplo, el flujo puede estar en ejecución pero intentando conectar con el maestro sin éxito; sólo este campo le muestra el problema de conexión. El estado del flujo SQL no se copia porque es más simple. Si está en ejecución, no hay problema; si no es así, puede encontrar el error en el campo Last_Error (descrito posteriormente).

Master_Host

Equipo maestro actual.

Master_User

Usuario actual usado para conectar con el maestro.

Master_Port

Puerto maestro actual.

Connect_Retry

Valor actual de la opción --master-connect-retry.

Master_Log_File

Nombre del fichero de log binario desde el que está leyendo actualmente el flujo de entrada/salida.

Read_Master_Log_Pos

La posición hasta la que el flujo de entrada/salida ha leído en el log binario del maestro.

Relay_Log_File

Nombre del fichero de log retardado desde el que el flujo SQL está leyendo y ejecutando actualmente.

Relay_Log_Pos

La posición hasta la que el flujo SQL ha leído y ejecutado en el flujo en el log retardado actual.

Relay_Master_Log_File

Nombre del log binario maestro que contiene la mayoría de los eventos recientes ejecutados por el flujo SQL.

Slave_IO_Running

Si el flujo de entrada/salida está activo.

Slave_SQL_Running

Si el flujo SQL está activo.

Replicate_Do_DB, Replicate_Ignore_DB

La lista de bases de datos especificadas con las opciones --replicate-do-db y --replicate-ignore-db , si se dió alguna.

Replicate_Do_Table, Replicate_Ignore_Table, Replicate_Wild_Do_Table, Replicate_Wild_Ignore_Table

Lista de tablas especificadas con las opciones --replicate-do-table, --replicate-ignore-table, --replicate-wild-do-table, y --replicate-wild-ignore_table , si se dió alguna.

Last_Errno, Last_Error

Número y mensaje de error retornados por la última consulta ejecutada. Un número de error 0 y mensaje vacío significa “no error.” Si el valor Last_Error no está vacío, también aparece como mensaje en el log de errores del esclavo. 
Por ejemplo: Last_Errno: 1051

Last_Error: error 'Unknown table 'z'' on query 'drop table z'

El mensaje indica que la tabla z existió en el maestro y se borró allí, pero no existió en el esclavo, así que DROP TABLE falló en el esclavo. (Esto puede ocurrir, por ejemplo, si olvidó copiar la tabla en el esclavo al configurar la replicación.)

Skip_Counter

El último valor usado para SQL_SLAVE_SKIP_COUNTER.

Exec_Master_Log_Pos

La posición del último evento ejecutado por el flujo SQL del log binario del maestro (Relay_Master_Log_File). (Relay_Master_Log_File, Exec_Master_Log_Pos) en el log binario del maestro correspondiente a (Relay_Log_File, Relay_Log_Pos) en el log retardado.

Relay_Log_Space

Tamaño total combinado de todos los logs retardados existentes.

Until_Condition, Until_Log_File, Until_Log_Pos

Valores especificados en la cláusula UNTIL del comando START SLAVE . 
Until_Condition tiene estos valores:

  • None si no se especificó UNTIL
  • Master si el esclavo está leyendo hasta una posición dada en el log binario del maestro
  • Relay si el esclavo está leyendo hasta una posición dada en su log retardado


Until_Log_File y Until_Log_Pos indica los valors del nombre de fichero y posición que definen el punto en que el flujo SQL para su ejecución.

Master_SSL_Allowed, Master_SSL_CA_File, Master_SSL_CA_Path, Master_SSL_Cert, Master_SSL_Cipher, Master_SSL_Key

Estos campos muestran los parámetros SSL usados por el esclavo para conectar con el maestro, si hay algo. Master_SSL_Allowed tiene estos valores:

  • Yes si se permite conexión SSL con el maestro
  • No si no se permite una conexión SSL con el maestro 
  • Ignored se se permite una conexión SSL pero el servidor esclavo no tiene soporte SSL activdo

 

Los valores de los otros campos relacionados con SSL se corresponden con los valores de las opciones --master-ca, --master-capath, --master-cert, --master-cipher, y --master-key .

Seconds_Behind_Master

Este campo indica el “retardo” del esclavo. Cuando el flujo SQL esclavo está en ejecución (procesando actualizaciones), este campo es el número de segundos que han pasado desde el momento del evento más reciente del maestro ejecutado por este flujo. Cuando ese flujo lo atrapa el flujo de entrada/salida esclavo y pasa a espera de más eventos del flujo de entrada/salida este campo es cero.

En resumen, este campo mide en segundos la diferencia temporal entre el flujo SQL esclavo y el flujo de entrada/salida esclavo. 
Si la conexión de red entre maestro y esclavo es rápida, el flujo de entrada/salida esclavo es muy cercano al maestro, así que este campo es una buena aproximación de cuanto tarda el flujo SQL esclavo en compararse con el maestro.En otras palabras, esta columna es útil sólo para redes rápidas.