Pregunta

Tengo una configuración de replicación de esclavo maestro y parece que se está ejecutando bien. A continuación se muestra el resultado de SHOW SLAVE STATUS dominio:

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_Pos y Relay_Master_Log_File.

Mis preguntas son:

  • ¿Es cierto que el archivo de registro de retransmisión es uno que se lee y almacena localmente para que la replicación se ejecute?

  • Qué pasa con la relay_master_log_file después; ¿Cómo es diferente de la Master_Log_File?

  • ¿Cuáles son los dos valores? verbigracia., Read_Master_Log_Pos y Relay_Log_Pos ? ¿Por qué están apareciendo a pesar de que la replicación está completa y sincronizada?

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

¿Fue útil?

Solución

Quiero entender más a fondo el relay_log_file, relay_log_pos y relay_master_log_file.

De SHOW SLAVE STATUS\G, obtenga dos valores

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

Los archivos están en binario, por lo que no pueden verlos bien

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

mysqlbinlog mysqld-relay-bin.000056 > /root/SQLForCurrentRelayLog.txt
less /root/SQLForCurrentRelayLog.txt

Otros consejos

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

Exec_Master_Log_Pos es la posición en el relay_master_log_file que el hilo SQL se ha ejecutado. Entonces, en su ejemplo, el esclavo DB ha ejecutado todas las declaraciones hasta Binlog mysql-bin.000001 POS 10726644 en el maestro DB.

until_log_pos Realmente 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 pare. Normalmente solo haría esto si desea replicar en un punto específico, pero no más (como si la siguiente declaración sea una caída de tabla accidental o algo así). El valor de until_log_pos es 0 cuando no se especifica, por lo que en su caso significa que la replicación seguirá avanzando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top