Tengo MySQL (5.5) en la configuración maestro-esclavo y creé otro servidor esclavo.
Detuve al esclavo original, descargué los datos, copié y volví a importar y funcionó bien. Noté la posición master_log del esclavo original y usé estos comandos para configurarlo en el nuevo esclavo
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;
Cuando comencé el nuevo esclavo que obtuve
Last_IO_Error: error grave 1236 del maestro al leer datos del registro binario: 'la entrada del evento de registro excedió max_allowed_packet; Aumentar max_allowed_packet en master '
Sin embargo, cuando comencé el esclavo original, se puso al día bien y ahora está sincronizado.
Entonces las preguntas:
el valor actual es 16M, ¿cómo sé qué tan grande ir? (Prefiero evitar la prueba y error con un servidor de producción).
¿por qué necesito aumentar el valor en el maestro cuando el esclavo original se las arregló bien, podría realmente ser el problema con el nuevo esclavo?
actualizar
Aumenté el max_allowed_packet a 1073741824 como Rolando sugirió en el maestro, esclavo viejo y esclavo nuevo, y los reinicié ( SET GLOBAL max_allowed_packet = 1073741824;
por alguna razón no pareció tomar)
ahora el último error de IO es el mismo que antes, pero ahora veo
Last_SQL_Error: error de lectura del registro de retransmisión: no se pudo analizar la entrada del evento de registro de retransmisión. Las posibles razones son: el registro binario del maestro está dañado (puede verificar esto ejecutando 'mysqlbinlog' en el registro binario), el registro de retransmisión del esclavo está dañado (puede verificar esto ejecutando 'mysqlbinlog' en el registro de retransmisión), un problema de red, o un error en el código MySQL del maestro o esclavo. Si desea verificar el registro binario del maestro o el registro de retransmisión del esclavo, podrá conocer sus nombres al emitir 'SHOW SLAVE STATUS' en este esclavo.
Si hago un mysqlbinlog en el archivo del maestro, se desplaza más allá con comandos muy felices durante siglos: el archivo es 722M, si lo hago para el registro de retransmisión esclavo, obtengo
ERROR: Error en Log_event :: read_log_event (): 'Error de comprobación de cordura', data_len: 38916267, event_type: 69
ERROR: no se pudo leer la entrada en el desplazamiento 253: error en el formato de registro o error de lectura.
Sin embargo, verifiqué las variables y los cambios funcionaron
mysql> muestra las variables como '% max_allowed_packet%';
en el nuevo esclavo mostró max_allowed_packet
Y slave_max_allowed_packet
donde como en el maestro solo tienemax_allowed_packet
así que hice una verificación de versión en el maestro:
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 |
+-------------------------+--------------------------------------+
y en el nuevo esclavo
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 |
+-------------------------+--------------------------------------+
¿Estas 2 versiones están demasiado separadas?