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 STATUS
comando:
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 está leyendo y almacenando localmente para que se ejecute la replicación?
¿Qué pasa con el
relay_master_log_file
entonces? ¿Cómo es diferente de laMaster_Log_File
?¿Cuáles son ambos valores, a saber? ,
Read_Master_Log_Pos
YRelay_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?
fuente
Relay_Master_Log_File
es 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 .Relay_Master_Log_File
es 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.htmlExec_Master_Log_Pos
es 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 binlogmysql-bin.000001
pos 10726644 en el maestro db.until_log_pos
en realidad solo se usa si comienzas tu esclavo con la sintaxisSTART SLAVE UNTIL master_log_pos = $integer
. Esa sintaxis se replicará hasta esa posición (será laexec_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 deuntil_log_pos
es 0 cuando no se especifica, por lo que en su caso significa que la replicación seguirá avanzando.fuente