Tratando de entender SHOW SLAVE STATUS en MySQL

11

Tengo una configuración de replicación Master-Slave y parece que está funcionando bien. A continuación se muestra un resultado del SHOW SLAVE STATUScomando:

show slave STATUS\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: *.*.*.*
                  Master_User: repliV1
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 10726644
               Relay_Log_File: mysqld-relay-bin.000056
                Relay_Log_Pos: 231871
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: data1
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 10726644
              Relay_Log_Space: 232172
              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: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:

Me gustaría entender más sobre el Relay_Log_File, Relay_Log_Posy Relay_Master_Log_File.

Mis preguntas son:

  • ¿Es cierto que el archivo de registro de retransmisión es uno que se está leyendo y almacenando localmente para que se ejecute la replicación?

  • ¿Qué pasa con el relay_master_log_fileentonces? ¿Cómo es diferente de la Master_Log_File?

  • ¿Cuáles son ambos valores, a saber? , Read_Master_Log_PosY Relay_Log_Pos? ¿Por qué aparecen aunque la replicación esté completa y sincronizada?

  • ¿Es cierto que estos archivos están en formato binario y, por lo tanto, no puedo verlos?

newbie14
fuente

Respuestas:

8

Quiero entender más a fondo es Relay_Log_File, Relay_Log_Pos y Relay_Master_Log_File.

De SHOW SLAVE STATUS\G, obtenga dos valores

  • Relay_Log_File : Registro de retransmisión actual que acepta nuevas entradas durante la replicación
  • Relay_Log_Pos : Posición actual del registro de retransmisión actual que acepta nuevas entradas durante la replicación
  • Relay_Master_Log_File : Archivo de registro de retransmisión que contiene la última instrucción SQL ejecutada con éxito en el maestro que se ejecutó en el esclavo.
  • Master_Log_File: el registro en el maestro que corresponde al archivo de registro de retransmisión actual y la posición del registro de retransmisión actual

Los archivos están en binario, por lo que no puedo verlos correctamente

Sí, puede ver los registros de retransmisión. Como tienen la misma estructura que un registro binario normal, simplemente ejecute el programa mysqlbinlog . Por ejemplo, para ver el SQL dentro de cualquiera de sus registros de retransmisión, como el último, haga lo siguiente:

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt
RolandoMySQLDBA
fuente
Ahora estoy más claro, ¿qué hay de Exec_Master_Log_Pos (esta es la posición del registro maestro de ejecución) y hasta donde_de_log_pos dónde detenerse?
newbie14
Error menor aquí. Relay_Master_Log_Filees el nombre del archivo de registro binario maestro que contiene el evento más reciente ejecutado por el hilo SQL, no el archivo de registro de retransmisión .
crishoj
@RolandoMySQLDBA ayudame porfavor dba.stackexchange.com/questions/177277/…
Ivan More Flores
8

Relay_Master_Log_Filees en realidad el nombre del binlog en el maestro que contiene la última instrucción SQL ejecutada con éxito en el esclavo. No es el nombre de un registro de retransmisión en el esclavo. Ver: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.html

Exec_Master_Log_Poses la posición en el archivo relay_master_log_file que el subproceso SQL esclavo ha ejecutado hasta. Entonces, en su ejemplo, el esclavo db ha ejecutado todas las declaraciones hasta binlog mysql-bin.000001pos 10726644 en el maestro db.

until_log_posen realidad solo se usa si comienzas tu esclavo con la sintaxis START SLAVE UNTIL master_log_pos = $integer. Esa sintaxis se replicará hasta esa posición (será la exec_master_log_pos) y luego se detendrá. Normalmente solo haría esto si quisiera replicar a un punto específico, pero no más (como si la siguiente declaración es una caída accidental de la tabla o algo así). El valor de until_log_poses 0 cuando no se especifica, por lo que en su caso significa que la replicación seguirá avanzando.

drogart
fuente
gracias me estoy volviendo aún más claro ahora. ¿Algo más para monitorear ahora?
newbie14