Como obtenho as coordenadas do log binário do MySQL dos arquivos binários?
-
26-09-2020 - |
Pergunta
Estou tentando configurar a replicação para um banco de dados MySQL grande (120 GB) e errei.
Desliguei o master, copiei os arquivos de dados e reiniciei o master.Agora configurei o escravo e o iniciei, e percebo que deixei de obter o MASTER_LOG_FILE
e MASTER_LOG_POS
valores necessários para configurar a replicação.
Ainda tenho uma cópia intacta dos arquivos de dados.Existe alguma maneira de determinar MASTER_LOG_FILE
e MASTER_LOG_POS
desses arquivos?
Pergunta relacionada:
- o que acontece se você definir o
MASTER_LOG_POS
para um ponto anterior no tempo? - Estou correto ao assumir que consultas duplicadas serão executadas, possivelmente resultando em dados duplicados?
Editar
Eu estive investigando o mysqlbinlog
comando e descobri o que parece ser a informação correta executando:
mysqlbinlog --to-last-log --start-datetime='2015-06-21 20:05:00'
mysql-bin.000006 | grep end_log_pos
A saída é mais ou menos assim:
... a whole bunch more lines ...
#150621 20:10:21 server id 1 end_log_pos 720159843 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720161877 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:21 server id 1 end_log_pos 720162762 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164796 Query thread_id=901489 exec_time=0 error_code=0
#150621 20:10:22 server id 1 end_log_pos 720164815 Stop
Acho que deveria usar uma dessas duas últimas posições, mas não tenho certeza de qual.
Solução
Felizmente, você ainda não iniciou o mysqld no escravo.
Acontece que uma posição do log binário também é o tamanho do log binário no final de cada evento do log binário.No seu caso, você pode usar o último binlog que o escravo vê, que posso assumir que é mysql-bin.000006
.Obtenha o tamanho do arquivo e use-o como posição.
Portanto, no Slave você correria
STOP SLAVE;
CHANGE MASTER TO
MASTER_HOST='...',
MASTER_PORT=3306,
MASTER_USER='repluser',
MASTER_PASSWORD='replpassword',
MASTER_LOG_FILE='mysql-bin.00006',
MASTER_LOG_POS=720164815;
START SLAVE;
e isso deveria bastar !!!
Já discuti a posição do binlog como o tamanho do arquivo antes
Nov 30, 2012
: Como você pode monitorar se os arquivos binlog do MySQL foram corrompidos?Oct 20, 2011
: Como lidar com a replicação My SQL DB Master to Master quando houve uma falta de espaço em disco
Você também perguntou
o que acontece se você definir MASTER_LOG_POS para um momento anterior?
Sim, ele reproduzirá esses eventos do binlog e causará problemas.