sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo volver a sincronizar la base de datos Mysql si el maestro y el esclavo tienen una base de datos diferente en caso de replicación de Mysql?

Este es el procedimiento completo paso a paso para resincronizar una replicación maestro-esclavo desde cero:

En el maestro:

RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

Y copiar los valores del resultado del último comando en alguna parte.

Sin cerrar la conexión con el cliente (porque liberaría el bloqueo de lectura), emita el comando para obtener un volcado del maestro:

mysqldump -u root -p --all-databases > /a/path/mysqldump.sql

Ahora puede liberar el bloqueo, incluso si el volcado aún no ha finalizado. Para hacerlo, ejecute el siguiente comando en el cliente MySQL:

UNLOCK TABLES;

Ahora copie el archivo de volcado al esclavo usando scp o su herramienta preferida.

En el esclavo:

Abra una conexión a mysql y escriba:

STOP SLAVE;

Cargue el volcado de datos del maestro con este comando de consola:

mysql -uroot -p < mysqldump.sql

Sincronizar registros de esclavo y maestro:

RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;

Donde los valores de los campos anteriores son los que copiaste antes.

Finalmente, escriba:

START SLAVE;

Para comprobar que todo funciona de nuevo, después de escribir:

SHOW SLAVE STATUS;

deberías ver:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

¡Eso es todo!