(self.SWG_BASIC = self.SWG_BASIC || []).push( basicSubscriptions => { basicSubscriptions.init({ type: "NewsArticle", isPartOfType: ["Product"], isPartOfProductId: "CAow2qWRCw:openaccess", clientOptions: { theme: "light", lang: "es-419" }, }); }); Mastodon

Share

Cómo sincronizar dos bases de datos en diferentes servidores

En este articulo vamos a hablar sobre las opciones que tenemos al momento de querer sincronizar dos bases de datos en diferentes servidores y hablaremos un poco sobre mi situación especial en la que también podrías encontrarte.

Antes de iniciar debo aclarar que solo hablaremos sobre las distintas opciones que existen y no entraremos a detalle sobre ninguna de las opciones.

De cualquier forma pienso que este articulo le caerá bien a más de alguno de mis lectores.

Analizando el caso

Antes que nada les comento un poco mi situación.. El proyecto en el que estaba metido era en un lugar donde la conexión a Internet no era confiable y tenia fallas en la señal.

Desarrollamos un software el cual sería utilizado por varias personas y donde la información se almacenaría en un servidor local.

Dadas las circunstancias en este punto no hay mucho problema, la conexion a la base de datos local, mysql por cierto, no debería de tener problemas si no hay Internet.

Otro detalle es que también se desarrollaría una plataforma web desde la cual los dueños de la empresa deben de monitoriar la información en todo momento y desde cualquier lugar.

Se contrato un hospedaje web en Internet para dicha plataforma por lo que ahora la situación era como sincronizar la base de datos local con la base de datos remota de la cual se alimenta la plataforma web.

No podiamos trabajar directamente con la base de datos remota pues el Internet no era de fiar y la velocidad en la operación era un punto critico.

Por tal motivo se decidio trabajar el software en la empresa de forma local y trabajar en alguna solución para sincronizar la base de datos local con la remota sin afectar el proceso interno. 

Opciones disponibles

La primera opción que encontramos fue por supuesto Mysql Replication.

Sin embargo tuvimos que dejar esta opción debido a que para este metodo se necesita realizar diversas configuraciones en ambos servidores y teniendo contratado un hosting compartido es imposible realizar esto.

Otra opción era contratar un servidor dedicado pero el costo era prohibitivo para y se considero para una última opción.

Una alternativa era realizar respaldos en la base de datos local y subirlos al servidor remoto cada cierto tiempo pero rapidamente lo desechamos pues conforme el sistema creciera también lo harían los problemas.

La solución elegida

Teniendo en cuenta las posibles soluciones y los requerimientos especiales de la situación de nuestro cliente nos topamos con la siguiente solución basada en dos aspectos.

  • [Parte 1] Ir guardando todas las instrucciones SQL relacionadas a modificaciones como Insert, Update, Delete en una tabla dedicada a conservar estos textos y con un campo para saber si ya se ha sincronizado con el servidor o no.
  • [Parte 2] Crear un script para consultar los queries sin sincronizar y ejecutarlas en la base de datos remota.
  • [Parte 3] Programar un cron para que cada x tiempo ejecute el script en el servidor local.

Y listo! Con esto logramos sincronizar dos bases de datos en diferentes servidores fácilmente y conforme a los requerimintos de la situación de nuestro cliente.

Además de todo sin alentar el proceso de uso del software en las instalaciones donde en ocasiones el Internet es lento o falla.

Espero y esta situación les sea de utilidad a alguién con los mismos problemas donde no puede utilizar la replicación propia de Mysql.

Si este post te ha sido de utilidad no olvide compartirlo en tus redes sociales y dejarnos un comentario si tienes alguna duda respecto a este tema.

You may also like