¿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.