¿Puede un esclavo MySQL ser un maestro al mismo tiempo?


17

Estoy en el proceso de migrar 2 servidores DB (maestro y esclavo) a dos nuevos servidores DB (maestro y esclavo)

DB1 - Master (producción)

DB2 - Esclavo (producción)

DB3 - Nuevo maestro

DB4 - Nuevo esclavo

Actualmente tengo la replicación configurada como:

DB1 -> DB2
DB3 -> DB4

Para replicar los datos de producción en los nuevos servidores, me gustaría "encadenarlos" para que se vea así:

DB1 -> DB2 -> DB3 -> DB4

es posible? Cuando ejecuto show master status;en DB2 (el esclavo de producción), la posición de binlog nunca parece cambiar:

+ ------------------ + ---------- + -------------- + ---- -------------- +
El | Archivo | Puesto | Binlog_Do_DB | Binlog_Ignore_DB |
+ ------------------ + ---------- + -------------- + ---- -------------- +
El | mysql-bin.000020 | 98 El | El |
+ ------------------ + ---------- + -------------- + ---- -------------- +

Estoy un poco confundido sobre por qué la posición del binlog no está cambiando en DB2, idealmente será el maestro de DB3.

Respuestas:



9

Sí, es posible :) Esto se llama replicación "Master with Relay Slave" y hay muchos documentos al respecto en la red.

Te recomiendo que eches un vistazo a la documentación oficial aquí .

Por cierto, también eche un vistazo a estas diapositivas . Tienen algunos consejos sobre topologías de replicación.

Espero que esto ayude.


3

Sí, puede conectar en cadena servidores MySQL, incluso puede hacer una replicación circular con dos o más máquinas. solo recuerde habilitar binloging en esclavo que también actúa como maestro.


1
La replicación circular es increíblemente frágil. Es desaconsejable en la mayoría de las circunstancias.
— Warner

@Warner: este fue solo un ejemplo de una configuración de replicación aún más complicada.
— pQd

Los amigos no permiten que los servidores mysql se conecten en cadena.
— sjas

@sjas a menos que tengan una razón muy específica para hacerlo y entiendan las posibles consecuencias de romper la cadena.
— pQd

Lo siento, pero todavía no. La complejidad siempre te persigue más tarde.
— sjas

0

Sí, es posible. Siendo realistas, necesita una nueva instantánea de DB2 para construir DB3. En ese punto, si tiene una buena posición, puede usarlo para DB4 o tomar otra instantánea de DB3.

No olvide establecer un único server_idpara cada servidor.

High Performance MySQL es un gran libro para hacer referencia a una administración MySQL más avanzada.


Actualmente, DB2 es solo un esclavo, pero su posición binlog no está cambiando ... ¿Sabes si eso es normal?
— mmattax

El esclavo (DB2) está actualizado con el maestro, pero la posición del binlog no está cambiando, ¿qué debo verificar?
— mmattax

Sí, he confirmado que puedo cambiar los datos en DB1 y están replicados en DB2, pero la posición binlog de DB2 es la misma.
— mmattax

Creo DB @ no está registrando cambios de esclavos, de ahí la posición no está cambiando: dev.mysql.com/doc/refman/5.1/en/...
— mmattax

0

¿Por qué no simplemente agregar DB3 como un nuevo esclavo y luego promoverlo a maestro cuando esté listo para hacer el cambio? Esto le daría el beneficio adicional temporal de tener múltiples esclavos, y reduciría o eliminaría su tiempo de inactividad.


eso es exactamente lo que estoy haciendo ...
— mmattax
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.