Error: "no se pudo inutilizar la estructura de información maestra" mientras se realiza la replicación de Master Slave en MySQL
replication db mysql (2)
Estoy tratando de hacer Master Slave Replication para MySQL. Cuando escribo el siguiente comando:
CHANGE MASTER TO MASTER_HOST=''10.1.100.1'', MASTER_USER=''slave_user'', MASTER_PASSWORD=''slave_password'', MASTER_LOG_FILE=''mysql-bin.000001'', MASTER_LOG_POS=451228;
mysql> START SLAVE;
arroja el siguiente error:
ERROR 1201 (HY000): no se pudo inicializar la estructura de información maestra; Se pueden encontrar más mensajes de error en el registro de errores de MySQL
Cualquier ayuda sería muy apreciada.
¡INTENTA RESTABLECERLA, HACE MAGIA! EN ESCLAVO EL MANDO ESCLAVO MYSQL TIPO:
RESET SLAVE;
VUELVA A INTENTARLO:
CHANGE MASTER TO MASTER_HOST=''10.1.100.1'', MASTER_USER=''slave_user'', MASTER_PASSWORD=''slave_password'', MASTER_LOG_FILE=''mysql-bin.000001'', MASTER_LOG_POS=451228;
mysql> START SLAVE;
Por favor verifique varias cosas:
1) Asegúrate de que el archivo /etc/my.cnf del maestro haya configurado server_id
Aquí está el por qué: la replicación se basa en server_id. Cada vez que se ejecuta una consulta y se graba en el registro binario del maestro, el id_servidor del maestro se graba con él. De forma predeterminada, si un server_id no está definido en /etc/my.cnf, server_id está predeterminado en 1. Sin embargo, las reglas de replicación de MySQL exigen que un server_id se defina explícitamente en el /etc/my.cnf del maestro. Además, para cualquier esclavo dado, mysqld comprueba el server_id de la declaración SQL a medida que lo lee desde el registro de retransmisión y se asegura de que sea diferente del server_id del esclavo. Así es como la Replicación MySQL sabe que es seguro ejecutar esa declaración SQL. Esta regla es necesaria en caso de que se implemente la replicación circular (Master-Master, MultiMaster).
2) Asegúrate de que el /etc/my.cnf del esclavo ha configurado realmente server_id
Esta es la razón: la misma razón que en # 1
3) Asegúrese de que server_id en el /etc/my.cnf del Master sea diferente del server_id en el /etc/my.cnf del Slave
Esta es la razón: la misma razón que en # 1
Como nota al margen: si configura múltiples esclavos, asegúrese de que cada esclavo tenga un server_id diferente de su maestro y sus esclavos hermanos.
Aquí está el porqué: Ejemplo
Un maestro con 2 esclavos
MASTER tiene server_id 1
SLAVE1 tiene server_id 2
SLAVE2 tiene server_id 2
La replicación se volverá agresivamente lenta en SLAVE2 porque un esclavo hermano tiene el mismo server_id. De hecho, se irá quedando atrás, tomará un descanso, procesará algunas declaraciones SQL. Este es el error del maestro por tener uno o más esclavos con los mismos server_ids. Este es un gotcha que en realidad no está documentado en ninguna parte. Lo he visto docenas de veces en mi vida.