Eu tenho o MySQL (5.5) na configuração master-slave e criei outro servidor slave.
Parei o slave original, despejei os dados, copiei e reimportei e funcionou bem. Eu anotei o master_log pos do slave original e usei esses comandos para configurá-lo no novo slave
CHANGE MASTER TO MASTER_HOST='<ipaddress>',
MASTER_USER='<username>', MASTER_PASSWORD='<password>',
MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000851',
MASTER_LOG_POS=15824150,
MASTER_CONNECT_RETRY=10;
Quando eu comecei o novo escravo eu consegui
Last_IO_Error: Obteve o erro fatal 1236 do mestre ao ler dados do log binário: 'entrada de evento de log excedida max_allowed_packet; Aumente max_allowed_packet no master'
No entanto, quando eu iniciei o slave original, ele pegou bem e agora está em sincronia.
Então as perguntas:
o valor atual é 16M, como eu sei o quão grande devo ir? (Prefiro evitar tentativa e erro com um servidor de produção).
por que eu preciso aumentar o valor no mestre quando o escravo original lidou bem, o problema realmente pode ser com o novo escravo?
atualizar
Aumentei o max_allowed_packet para 1073741824 como Rolando sugeriu no mestre, escravo antigo e novo escravo, e reiniciei-os ( SET GLOBAL max_allowed_packet = 1073741824;
por algum motivo não pareceu demorar)
agora o último erro de IO é o mesmo de antes, mas agora vejo
Last_SQL_Error: Falha na leitura do log de retransmissão: não foi possível analisar a entrada do evento de log de retransmissão. As possíveis razões são: o log binário do mestre está corrompido (você pode verificar isso executando 'mysqlbinlog' no log binário), o log de retransmissão do escravo está corrompido (você pode verificar isso executando 'mysqlbinlog' no log de retransmissão), um problema de rede, ou um bug no código MySQL do mestre ou escravo. Se você quiser verificar o log binário do mestre ou o log de retransmissão do escravo, poderá saber seus nomes emitindo 'SHOW SLAVE STATUS' neste escravo.
Se eu fizer um mysqlbinlog no arquivo do mestre, ele passará com comandos muito felizes por muito tempo - o arquivo é 722M - se eu fizer isso para o log de retransmissão do escravo, recebo
ERRO: Erro no Log_event::read_log_event(): 'Falha na verificação de integridade', data_len: 38916267, event_type: 69
ERRO: Não foi possível ler a entrada no deslocamento 253: Erro no formato do log ou erro de leitura.
Eu verifiquei as variáveis e as alterações funcionaram no entanto
mysql> mostra variáveis LIKE '%max_allowed_packet%';
no novo escravo mostrou max_allowed_packet
E slave_max_allowed_packet
onde como no mestre só temmax_allowed_packet
então eu fiz uma verificação de versão no mestre:
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 1.1.6 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.11-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
e no novo escravo
mysql> show variables LIKE '%version%';
+-------------------------+--------------------------------------+
| Variable_name | Value |
+-------------------------+--------------------------------------+
| innodb_version | 5.5.32 |
| protocol_version | 10 |
| slave_type_conversions | |
| version | 5.5.32-log |
| version_comment | MySQL Community Server (GPL) by Remi |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+--------------------------------------+
Essas 2 versões estão muito distantes?