Saltar al contenido principal

Sincronizar una bd mysql del hosting con una local

No planeada

Comentarios

7 comentarios

  • Luis Caceres

    Hola Sergio, la idea de replicar esta bueno pero a un servidor local no es buena idea porque el punto de falla es muy grande y te va a traer varios dolores de cabeza como cortes de conexion, apagados accidentales de tu cliente o cualquier problema tecnico. Diferente es replicar la base entre varios servers que tengan minimamente estabilidad como en un datacenter

    Si el tema es la sincronización entre la empresa del cliente y tu server en la nube, yo lo resolví varias veces en mis aplicaciones pegándole a la base desde la aplicación instalada en el local del cliente. Con Wnpower tengo 4 o 5 servers y la latencia es suficientemente buena para trabajar online en lugar de tener una base local, abrazoss

    0
  • Sergio Rassino

    Hola Luis. Gracias por tus aportes.

    Entiendo tu punto, Pero hacemos sistemas para escuelas que muchas veces están en lugares con mala conexión a internet, y no podemos dejarlos sin sistema cada vez que se les corta.

    Entonces, tenemos un sistema local para uso en la escuela con una bd local, y una "plataforma web" donde los profes y los alumnos realizan algunas tareas. Y las bd local y web generan una cola de instrucciones mysql que se ejecutan cuando hay conexión.

    Por ahora estamos resolviendo el tema con triggers, pero a medida que el sistema se agranda es complejo mantener esa estructura. Se te ocurre alguna otra alternativa?

    Me encantaría recibir sugerencias que me permitan pensar en otra forma de resolverlo.

    Muchas gracias

    0
  • Gonzalo Diaz

    Hola!

    Quizas puedas utilizar el servicio de replicación de MySQL en configuración master-slave y que el se encargue de balancear las DB.

    Saludos!

    0
  • Sergio Rassino

    Hola Gonzalo. Gracias por tu aporte. Estuve leyendo sobre eso pero parece ser una cuestión bastante compleja y mis conocimientos de mysql no son tan elevados. Y tengo miedo de generar más problemas que soluciones. 

    Muchas gracias por tu interes y seguiremos buscando alternativas.

    Abrazo

     

    0
  • Gonzalo Diaz

    La otra posibilidad que se me ocurre, es que usando campos fechas de los registros que tengas en las tablas, ver cual fue el ultimo de un lado y del otro para enviarle las diferencias. Mismo si queres trabajar con cantidad de registros por tabla puede ser.

    Es más artesanal que el balanceo de mysql pero es parecido a como lo hace el motor de base de datos.

    Saludos!

    0
  • Sergio Rassino

    Qué idea interesante Gonzalo. Te cuento que ésto sí estaría dentro del alcance de nuestros conocimientos de mysql. Lo que no me queda claro es cuál sería la lógica del proceso de sincronización... Trabajaría con triggers? O Habría que hacer un proceso cada x minutos que revise los últimos registros modificados en cada tabla, y de cada lado, para enviar las actualizaciones....

    Cómo es que vos lo estabas pensando?

    Y desde ya, mil gracias por tu interes en nuestro tema.

    Un saludo

    Sergio

    0
  • Gonzalo Diaz

    Podes hacer un proceso cada X tiempo que quieras y podes pedir el ultimo registro de tiempo o id de tabla y comparar con el ultimo que tenes en esa base de datos y ahi mandar los insert.

    Si tambien necesitas hacer updates podes pedir por cada tabla los id y un campo de ultima actualización y el que tenga el más reciente es el que tiene que actualizar al otro.

    Seria como un sincronizador hecho a mano. El de los updates no es muy eficiente porque tiene que rastrear los cambios pero si lo haces con primary keys y la fecha tambien es un indice podes hacer que sea un poco más performante.

    Es posible que tengas que agregar un campo ultima actualización en los registros para que esto funcione, como lo hace Laravel por defecto.

    Espero que esta idea te ayude, aunque sea para armar algo artesanal para balancear las bases de datos.

    Saludos!

    0

Iniciar sesión para dejar un comentario.