Eu tenho uma configuração de replicação Master-Slave e parece que está funcionando bem. Abaixo está um resultado do 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:
Eu gostaria de entender melhor sobre o Relay_Log_File
, Relay_Log_Pos
e Relay_Master_Log_File
.
Minhas perguntas são:
É verdade que o arquivo de log de retransmissão está sendo lido e armazenado localmente para que a replicação seja executada?
E quanto ao
relay_master_log_file
então; como é diferente doMaster_Log_File
?Quais são esses dois valores, viz. ,
Read_Master_Log_Pos
ERelay_Log_Pos
? Por que eles estão aparecendo, mesmo que a replicação esteja completa e sincronizada?É verdade que esses arquivos estão no formato binário e, portanto, não consigo visualizá-los?
fonte
Relay_Master_Log_File
é o nome do arquivo de log binário principal que contém o evento mais recente executado pelo encadeamento SQL, não o arquivo de log de retransmissão .Relay_Master_Log_File
é realmente o nome do binlog no mestre que contém a última instrução SQL executada com sucesso no escravo. Não é o nome de um log de retransmissão no escravo. Consulte: http://dev.mysql.com/doc/refman/5.5/en/show-slave-status.htmlExec_Master_Log_Pos
é a posição no relay_master_log_file que o encadeamento SQL escravo executou até. Portanto, no seu exemplo, o db escravo executou todas as instruções até omysql-bin.000001
binlog pos 10726644 no db mestre.until_log_pos
é realmente usado apenas se você iniciar seu escravo com a sintaxeSTART SLAVE UNTIL master_log_pos = $integer
. Essa sintaxe será replicada até essa posição (será aexec_master_log_pos
) e depois parará. Normalmente, você faria isso apenas se quisesse replicar para um ponto específico, mas não mais (como se a próxima instrução fosse uma queda acidental da tabela ou algo assim). O valor deuntil_log_pos
é 0 quando não for especificado, portanto, no seu caso, significa que a replicação continuará avançando.fonte