entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Se puede usar MySQL como una base de datos distribuida?

Hola a todos! Necesito saber si se puede usar MySQL como una base de datos distribuida y como se puede hacer eso. Mi idea es tener un VPS con una base de datos MySQL y varias replicas en varias sucursales. Si a una de esas sucursales se le corta la conexión a Internet, pueda seguir trabajando con la información que tiene disponible en su replica y cuando vuelve la conexión esa información nueva se actualiza con el servidor principal. El servidor principal va a estar en el hosting VPS. Se puede hacer todo esto? Saludos!

1 Respuesta

0voto

Leonardo-Tadei Puntos227320

Hola @pedrourday,

este esquema de replicación en MySQL se llama master/slave, en dónde un servidor RDMBS maestro va creando un log binario con las transacciones que se transmite a los esclavos asincrónicamente, para que todos tengan la misma información.

Luego, en el caso de que el master no esté disponible, el esclavo puede hacerse cargo de mantener las operaciones.

El esquema master/master se implementa con una configuración circular, en la que el eslavo es a su vez master del otro servidor.

Esto funciona bien, pero no incluye el que los clientes cambien de servidor cuando el master cae: hay que implementar el mecanismo de derivación de otra manera, generalmente en el servidor que corre la aplicación que usa los datos.

Saludos cordiales!

0voto

pedrourday comentado

Hola @Leonardo-Tadei
Gracias por responder rápido. Esta pregunta esta relacionada con esta otra: http://entredesarrolladores.com/15600/conocen-algun-hosting-serio-con-acceso-root-seguro-economico
Yo creo que con master/slave va a funcionar. El master estaría en el hosting VPS y los slaves en cada una de las sucursales. Así es como me lo imagino: Cada una de las sucursales tendría instalado un servidor local con PHP y MySQL(slave). En cada una de las sucursales la aplicación web seria servida desde el servidor local, que por ser local siempre estaría disponible. El único que se conecta a Internet es MySQL(slave) y solo para sincronizar. Para tener la aplicación web sincronizada entre el VPS y las sucursales podría usar GIT y cada vez que hago alguna actualización con solo algunos comandos lo tendría actualizado. Está bien todo esto que digo.
Lo que faltaría es saber como se configura MySQL en el VPS y en las sucursales para hacer todo esto.
Saludos cordiales!

0voto

Leonardo-Tadei comentado

Hola Pedro,

lo estás pensando al revés: en el Master es en el único que se escribe. Los esclavos mantienen una réplica para reemplazar al master en caso de que se caiga y salvo que montes una configuración circular, si escribís algo en el esclavo, tenés que moverlo a mano al master antes de volver a dar servicio, porque las cosas NO VIAJAN de los esclavos a los masters...

Si vos querés que las sucursales usen el servidor local, son los servidores locales los que tienen que ser Masters: nunca pueden ser los esclavos!

Respecto a la configuración de todo esto, está en el enlace que te pongo en la respuesta de más arriba. Hay además decenas de tutoriales en la red buscando por "servidor MySQL replicado".

Pero: qué problema querés resolver? Pareciera que tu problema no es de mantener la disponibilidad, sino de tener un la web una copia de las cosas para que consuma una app web y que el servidor en la web tenga los mismos datos que una sucursal (o que todas las sucursales: tampoco queda claro si es una software multi-sucursal o multi-tenant)

En caso de que el problema sea atender a una web app: hace falta toda la DB o basta solo con una parte? Necesita estar sincronizada sincrónicamente o se puede hacer en diferido?

Si es un software multi-sucursal: cómo sincronizan ahora las sucursales?

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta