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 mais 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 é aquele que está sendo lido e armazenado localmente para que a replicação seja executada?
E o
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 em formato binário e, portanto, não posso visualizá-los?
De
SHOW SLAVE STATUS\G
, obtenha dois valoresRelay_Log_File
: Log de retransmissão atual aceitando novas entradas durante a replicaçãoRelay_Log_Pos
: Posição atual do log de retransmissão atual aceitando novas entradas durante a replicaçãoRelay_Master_Log_File
: Arquivo de log de retransmissão contendo a última instrução SQL executada com sucesso no Mestre que foi executada no Escravo.Sim, você pode visualizar os logs de retransmissão. Como eles têm a mesma estrutura de um log binário normal, basta executar o programa mysqlbinlog . Por exemplo, para visualizar o SQL em qualquer um de seus logs de retransmissão, como o último, faça o seguinte:
Relay_Master_Log_File
é na verdade o nome do log binário 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. Veja: 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 thread SQL escravo executou até. Então, no seu exemplo, o banco de dados escravo executou todas as instruções atémysql-bin.000001
binlog pos 10726644 no banco de dados mestre.until_log_pos
é realmente usado apenas se você iniciar seu slave com a sintaxeSTART SLAVE UNTIL master_log_pos = $integer
. Essa sintaxe será replicada até essa posição (será oexec_master_log_pos
) e depois parará. Você normalmente só faria isso se quisesse replicar para um ponto específico, mas não mais (como se a próxima instrução for uma queda acidental de tabela ou algo assim). O valor deuntil_log_pos
é 0 quando não é especificado, portanto, no seu caso, significa que a replicação continuará avançando.