Eu tenho a configuração de replicação encadeada do MySQL como Master->Slave1->Slave2.
Os eventos estão replicando perfeitamente de M->S1 e também gravados nos logs de retransmissão e binários em S1, mas o S2 não recebe esses eventos.
SHOW SLAVE STATUS
no S2 está mostrando os threads de IO e SQL em execução, Exec_Master_Log_Pos
está mudando constantemente, mas Relay_Log_Space
permanece Relay_Log_Pos
estático.
Master é MySQL 5.5, S1 e S2 são ambos MySQL 5.6.40.
Interessante que, se alguma atualização for feita diretamente no S1, ela será replicada corretamente no S2.
Verifiquei que o espaço em disco não está cheio em nenhum dos servidores.
Também olhei e coloquei um comentário sobre a replicação do Mysql está habilitada, mas travada em "aguardando a atualização do log binário"
Em S1
eu tenho:
mysql> show global variables like '%slave%';
+------------------------------+-----------------------+
| Variable_name | Value |
+------------------------------+-----------------------+
| init_slave | |
| log_slave_updates | ON |
| log_slow_slave_statements | OFF |
| rpl_stop_slave_timeout | 31536000 |
| slave_allow_batching | OFF |
| slave_checkpoint_group | 512 |
| slave_checkpoint_period | 300 |
| slave_compressed_protocol | OFF |
| slave_exec_mode | STRICT |
| slave_load_tmpdir | /tmp |
| slave_max_allowed_packet | 1073741824 |
| slave_net_timeout | 3600 |
| slave_parallel_workers | 0 |
| slave_pending_jobs_size_max | 16777216 |
| slave_rows_search_algorithms | TABLE_SCAN,INDEX_SCAN |
| slave_skip_errors | OFF |
| slave_sql_verify_checksum | ON |
| slave_transaction_retries | 10 |
| slave_type_conversions | |
| sql_slave_skip_counter | 0 |
+------------------------------+-----------------------+
On M:
- SELECT @@global.server_id=6
- SELECT @@global.server_uuid=05ac0062-7af8-11e5-9af2-9c8e991000d2
On S1:
- SELECT @@global.server_id=4
- SELECT @@global.server_uuid=062ad58e-59ed-11e8-a7ea-000d3a32adb2
On S2:
- SELECT @@global.server_id=6
- SELECT @@global.server_uuid=184b1c69-7868-11e8-aeab-000d3a321333
O problema decorre de log_slave_updates . Você precisa disso
S1
para que os logs binários deS1
possam ser a fonte paraS2
ler os eventos.Por favor, adicione esta linha ao my.cnf em
S1
e reinicie o mysqld em
S1
. Em seguida, configure a replicação deS1
paraS2
.S2
está atualmente fora de sincronia comS1
, entãoS2
pode precisar ser recarregado ou sincronizado usando pt-table-checksum e pt-table-sync .ATUALIZAÇÃO 2018-06-25 12:23 EDT
Obrigado pela atualização,
Aqui está o seu problema:
M1
eS2
ter o mesmo server_id .S2
nunca processará um evento se o evento de entradaserver_id
for o mesmo queS2
.Altere o server_id
S2
para algo diferente4
ou6
usado por M e S1.