
Se me asignó la tarea de crear una instancia de desarrollo de MySQL. Actualmente tenemos un clúster Xtradb de 7 nodos. ¿Hay alguna forma de tener este nodo con algunas horas de retraso o no permitir la replicación al resto del clúster? Me encantaría que se actualizara desde los otros nodos, pero no permitiría la replicación.
Me preocupa que alguien deje caer una mesa o haga cosas no tan puras y derribe el grupo.
¡Cualquier idea será altamente apreciada!
Respuesta1
Simplemente haga que su servidor de desarrollo se conecte mediante la replicación normal, no se una al clúster. La replicación estándar es unidireccional (a menos que la configure en ambos lados). Su servidor de desarrollo extraerá los binlogs del maestro del que está trabajando. Esa es toda la comunicación que ocurriría entre la instancia de desarrollo y su clúster.
No creo que haya una manera fácil de hacer esto con un nodo que en realidad sea parte del clúster. El objetivo del clúster es no tener los datos desincronizados.
Si está decidido a hacerlo mediante un retraso de replicación, eche un vistazo aretardo-esclavo-ptsi está ejecutando 5.5 o inferior. Si estás en 5.6 entonces esoLa funcionalidad ya está integrada..
La forma en que haría esto no implicaría replicación en absoluto. Deberías realizar copias de seguridad adecuadas (soy fanático dePercona Xtrabackup), luego simplemente puede restaurar esa copia de seguridad en su instancia de desarrollo. Haz lo que quieras y luego restáuralo nuevamente.
Hacerlo mediante replicación le provocará más errores de los que probablemente desee afrontar. Si alguien elimina una tabla en el host de desarrollo, la replicación simplemente se interrumpe la próxima vez que el clúster principal intenta actualizar ese archivo. Tendrás que ingresar manualmente para reiniciarlo (o ejecutar unscript que lo hace por ti).