
Es mi primera pregunta aquí y el inglés no es mi lengua materna, pero intentaré explicarlo.
Tengo un servidor MySQL maestro con una dirección IP pública ejecutándose en la infraestructura de mi proveedor y quiero ejecutar un servidor esclavo MySQL local en mi oficina que replicará todos los datos con fines de prueba.
La configuración de la replicación funciona perfectamente, creé un túnel SSH para que mi esclavo lea el binlog del maestro, aquí todo está bien.
Mi problema es configurar los datos del maestro. Normalmente, cuando quiero cargar los datos del maestro a cualquier esclavo en la misma red, ejecuto el siguiente comando en el maestro:
mysqldump 'master' --master-data=1 | mysql 'slave'
pero aquí no puedo tener ninguna IP para el esclavo porque está ubicado en mi oficina detrás de una serie de enrutadores NAT...
¿Alguien tiene una solución sabiendo que no puedo detener el maestro y que contiene alrededor de 50 GB de datos? Si tiene alguna otra solución para realizar una transferencia de datos "en caliente" de un maestro a un esclavo, también estoy muy interesado.
Gracias de antemano.
Respuesta1
Suponiendo que puedas enviar ssh al maestro, ¿qué tal si lo haces desde el esclavo?
ssh master 'mysqldump \'master\' --master-data=1' | mysql 'slave'
Esto ejecutará el comando de volcado en el maestro, pero lo recargará localmente.
Respuesta2
¿Por qué no lo reenvías a un archivo y lo transfieres más tarde mediante scp
o rsync
?
mysqldump master --master-data=1 >master.dump
en esclavo
mysql <master.dump
Alternativamente, ejecute el mysqldump
comando en el esclavo, no en el maestro. Quizás funcione mejor sin el error anterior.
Sugerencia: ¿Quizás deberías deshacerte de todas las bases de datos, no solo de una?