Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Replicacion Bilateral

Estas en el tema de Replicacion Bilateral en el foro de Mysql en Foros del Web. Estimados, Recurro a ustedes porque estoy en un callejón sin salida. Tengo una aplicación en Casa Central, y se van a instalar varias sucursales. La ...
  #1 (permalink)  
Antiguo 13/07/2013, 09:56
 
Fecha de Ingreso: junio-2013
Mensajes: 43
Antigüedad: 11 años, 4 meses
Puntos: 0
Replicacion Bilateral

Estimados,

Recurro a ustedes porque estoy en un callejón sin salida.

Tengo una aplicación en Casa Central, y se van a instalar varias sucursales.

La base es MySQL y está en un Servidor Centos..

Las sucursales tendrán una conexión VPN para poder transmitir nuevas versiones del Software y para acceder a tablas que van a estar centralizadas (por su criticidad).

El problema que me encuentro tiene que ver con las estructuras de las tablas. donde me bloquee con la idea de ..

QUE SUCEDE CUANDO MODIFICO LAS ESTRUCTURAS DE LAS TABLAS EN CASA CENTRAL Y TENGO QUE OBTENER LA MISMA ESTRUCTURA EN LOS LOCALES REMOTOS ?

Tengo que conectarme a la bases Remotas y modificar manualmente cada base de cada sucursal ?

Intenté hacer una rutina que recorra las tablas COLUMNS, KEYCOLUMN_USAGE, TABLES, TABLE_CONSTRAINTS y STATISTICS de la base Central y la iguale en la base Remota.. pero hay varios problemas con eso.

QUE PASA SI EN LA BASE CENTRAL RENOMBRO UN CAMPO ?

En la rutina encontrará un campo que no existe en las tablas de la sucursal y lo creará.. pero no es lo mismo RENOMBRAR un campo.. (que mantiene los datos) que CREAR uno nuevo.. que pone las columnas sin datos.

No me sirven las tablas FEDERATED, de hecho, ese Engine no lo tengo incluido en mi MySQL.

La finalidad de todo esto es. .que a cualquier momento del día, las sucursales puedan SINCRONIZAR DATOS con Casa Central Bilateralmente, Enviar Datos y Recibir Datos.

Ej.

Poder recibir nuevas altas de Productos
Cambios de Precios
Nuevo Proveedores
etc

Poder Transmitir Detalles de Ventas
Movimientos de Stock
Estadísticas, etc.

Si bien el vinculo es una VPN... al no contar con Energia asegurada en Casa Central.. (podria haber cortes prolongados de luz) y al no tener asegurado que Internet funcione a la perfección en Casa Central.. es que no podemos tenerlas 100 % full Online... y tenemos que recurrir a las sincronizaciones asincrónicas.

En Conclusión,

Lo que mas preocupa son las MODIFICACIONES de ESTRUCTURA de las TABLAS.

Como lograr, mediante algun Soft ya existente, o técnica de programación, o lo que ustedes conozcan, que esto pueda darse, sin que yo tenga que recurrir a ir manualmente a cada Base local de cada Sucursal a replicar las modificaciones que he hecho en la Base Central.

Muchas Gracias por la ayuda !
  #2 (permalink)  
Antiguo 13/07/2013, 12:41
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Replicacion Bilateral

No hay una únca manera de manejar tu problema, pero existen ciertas políticas que suelen seguirse en cuanto a BBDD productivas se refiere:
- La primera de todas es no modificar nada, a menos que sea total y absolutamente necesario. El área de ABD de la empresa para la que trabajo tiene una política muy interesante para los pedidos de cambio: NO. Es la primera respuesta que se obtiene siempre.
- Si es necesario hacerlo, se debe realizar en forma sincrónica en todas las bases al mismo tiempo, sin excepciones. Para esto nosotros contamos con un par de ambientes de prueba que son réplica de la base productiva, y cualquier experimento se realiza en ellos. Jamás en la base de trabajo hasta que no está todo probado.
- Antes de realizar un cambio, las bases productivas se deben detener. Se deben aislar, y no se debe proceder a realizar procesos de ABM en ellas hasta que no se han verificado que los cambios están todos replicados.
- Todo cambio estructural de las bases debe ser siempre posible de deshacer, o de lo contrario no sirve. Si no puedes deshacer algo, no lo intentes.
- Nunca se hace un cambio antes de asegurarse que todos los procesos de las aplicaciones, afectados por ellos, acompañan el cambio implementado. Si los DAC no llevan la modificación incluida, no es posible realizar cambios que afecten las estructuras.
- Jamás de los jamáses imaginables, realices modificaciones dinámicas. Estás tratando con una estructura estática, de la que dependen los procesos comerciales. No hagas cosas sin aprobación escrita, so pena de encontrarte en la calle en menos del tiempo necesario para escribir tu despido. He visto a DBAs perder el trabajo por tonterías de ese calibre.

En otras palabras, cualquier migración y cambio estructural, tiene que ser planificado hasta el último detalle. Si hay un aspecto sin verificar, entonces no lo hagas.

Cita:
QUE PASA SI EN LA BASE CENTRAL RENOMBRO UN CAMPO
Un consejo: Los campos de las tablas no se cambian de nombre. Nunca. Si lo quieres hacer porque lo usas en un reporte, entonces genera vistas para el reporte, y genera los encabezados con los nombres que necesites (hay muchas herramientas para hacer eso).
Pero si necesitas cambiar los nombres porque hubo un error al crearlo, entonces lo que tienes mal es el protocolo de desarrollo, porque jamás debió llegar a producción con un nombre mal. Eso se debió detectar antes.

Consejo sabio: Crea un ambiente de pruebas con una réplica de la base productiva.
Te ahorrarás problemas en los testeos, y te permitirá desarrollar los scripts necesarios para crear las modificaciones que se replicarán en los servidores de sucursal, sin necesidad de hacerlo a mano.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/07/2013, 11:23
 
Fecha de Ingreso: junio-2013
Mensajes: 43
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Replicacion Bilateral

Muchas Gracias por los datos.

La diferencia entre mi realidad y quizas la que tu planeas, es que yo estoy inmerso en el desarrollo de la aplicación en este momento.. no es que es un soft ya terminado y le estamos haciendo modificaciones.

Estoy creando el sistema integral y ya parte de ese sistema está en producción, lo cual me lleva a hacerle 1000 implementaciones y modificaciones cada día.

No fue algo que yo elegí así.. fueron los apuros y necesidades de la empresa en la que estoy desarrollando.

Saludos y Gracias

Etiquetas: campo, replicacion, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:26.