Eu tenho o MySQL (5.5) na configuração master-slave e criei outro servidor slave.
Parei o escravo original, joguei os dados, copiei e reimportei e funcionou bem. Observei a posição master_log do escravo original e usei esses comandos para configurá-lo no novo escravo
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 recebi
Last_IO_Error: erro fatal 1236 do mestre ao ler dados do log binário: 'a entrada do evento de log excedeu max_allowed_packet; Aumentar max_allowed_packet no master '
No entanto, quando iniciei o escravo original, ele alcançou muito bem e agora está sincronizado.
Então as perguntas:
o valor atual é 16 milhões, como sei qual o tamanho máximo? (Prefiro evitar tentativa e erro com um servidor de produção).
por que preciso aumentar o valor do mestre quando o escravo original lidou muito bem? O problema poderia realmente estar com o novo escravo?
atualizar
Aumentei o max_allowed_packet para 1073741824, como Rolando sugeriu no mestre, no antigo escravo e no novo escravo, e os reiniciei ( SET GLOBAL max_allowed_packet = 1073741824;
por algum motivo não pareceu levar)
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 do 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), problema de rede ou um erro no código MySQL do mestre ou escravo. Se você quiser verificar o registro binário do mestre ou o relé do escravo, poderá saber seus nomes emitindo 'SHOW SLAVE STATUS' neste escravo.
Se eu faço um mysqlbinlog no arquivo do mestre, ele passa com comandos muito felizes por séculos - o arquivo é 722M - se eu fizer isso no 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> show variable 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 master:
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 duas versões estão muito distantes?