Problema
Tengo la configuración de replicación MySQL entre 2 servidores, maestro ( A ) y esclavo ( B ). Necesito agregar un nuevo esclavo a la mezcla ( C ). Quiero que este esclavo obtenga sus actualizaciones directamente del maestro, no quiero la replicación en cadena del esclavo. Sin embargo, el maestro está "activo", generalmente uso Xtrabackup para crear una copia de seguridad completa del maestro, pero esto lo bloqueará durante unos 10 minutos, ya que la base de datos tiene un tamaño de alrededor de 20 GB.
Solución posible
ENJUAGUE LAS TABLAS CON READ LOCK en el esclavo B , use SHOW SLAVE STATUS en B , escriba binlog y posición. Luego haga una copia de seguridad de la base de datos con Xtrabackup, envíe la copia de seguridad a C y úsela para crear el esclavo, y configure la replicación para que apunte a A con la posición binlog que acabo de escribir.
Pregunta
¿Hay alguna forma mejor que no requiera que bloquee B por tanto tiempo? ¿O algo que se automatice más fácilmente?
fuente
start slave
(SlaveC) me aparece "Error al abrir el registro de retransmisión '/var/log/mysql/mysql-relay-bin.001603"Cuando agregamos un esclavo a nuestra mezcla, hacemos lo siguiente:
fuente
Hice lo que @RolandoMySQLDBA sugiere pero también agregué unos pasos de 6 ' y 8' (esto resuelve lo que comenta @Hussain Tamboli ):
Paso 1) Configurar un nuevo servidor (ServerC)
Paso 2) En ServerC, instale MySQL (misma versión que ServerB)
Paso 3) En ServerC, servicio mysql stop
Paso 4) Copie /etc/my.cnf de ServerB a ServerC
Paso 5) En ServerC, cambie server_id a un valor diferente de ServerA y ServerB
Paso 6) rsync / var / lib / mysql en ServerB a ServerC
Paso 6 ') rsync / var / log / mysql en ServerB to ServerC
Paso 7) Cuando se complete rsync, ejecute "STOP SLAVE"; en ServerB
Paso 8) rsync / var / lib / mysql en ServerB a ServerC
Paso 8 ') rsync / var / log / mysql en ServerB to ServerC
Paso 9) En el ServidorB, ejecuta "INICIAR ESCLAVO";
Paso 10) En ServerC, inicie el servicio mysql
Paso 11) En ServerC, ejecuta "INICIAR ESCLAVO"; (Haga esto si skip-slave-start está en /etc/my.cnf)
fuente
Tiene la opción "CARGAR DATOS DEL MAESTRO", pero eso no se recomienda.
¿Hace copias de seguridad nocturnas / semanales en su sistema? Si es así, también tenga en cuenta la posición con su copia de seguridad, entonces puede usar esa copia de seguridad para configurar un nuevo esclavo. Simplemente déjelo en paz y permita que se actualice por un tiempo.
fuente
Intenté las respuestas de Rolando y funcionó bien, pero comencé a reproducir desde el principio y tuve que agregar más código de error para omitir (sé que no es recomendable, pero sé lo que estaba haciendo).
Una vez hecho el paso 7, revisé el registro mysql y anoté el nombre y la posición del registro bin y continué hasta el noveno paso. Antes del décimo paso, acabo de ejecutar
change master
el archivo de registro y la posición del registro. Y continuó desde el paso 11. Todo me parece bien.fuente
Debe cambiar el uuid de esclavo en auto.cnf para que el maestro pueda diferenciar a los dos esclavos.
fuente