Sincronización servidores MySQL en diferentes regiones

  • Autor Autor Tarrioin
  • Fecha de inicio Fecha de inicio
T

Tarrioin

Dseda
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Tengo un servidor que a ido creciendo en la nube.
Uso Ubunto con Nginx memcached mysql phpadmin.

Lo que hago es crear una copia de esos servidores y con esa copia creo nuevos servidores.

Esos nuevos servidores están en New York y Singapur [emoji1215].

Ahora quiero que el servidores existen que está en Londres se sincronice con el servidor de New York y Singapur.

El problema es que los servidores son para usar prosper202. Así que. Cada servidor no solo lee su base de datos. Sino que también escribe en ella.

La cuestión es sabiendo todo esto.
La replicacion maestro maestro la puedo hacer solo entre dos servidores.

Pero no la puedo hacer entre tres. Porque si alguno se cae se lía.

¿Hay alguna forma de sincronizar tres bases de datos de servidores distintos?

¿Como hago para su el servidor AA no escriba en el mismo sitio que el servidor BB y el servidor CC y que esto cree un conflicto en la tabla?


Vi algo de cluster MySQL. Pero no sé si es el camino que tengo que seguir.

Realmente no necesito tener servidores solo dedicados a base de datos. Sino que necesito que cada servidor tenga su base de datos y entre ella se comuniquen y se sincronicen.
También necesito que no escriban en el mismo sitio para evitar que los datos corruptos.

¿Como lo veis?

Esto todo de desplegar servidores en otra parte lo hago por la latencia.

Ya probé a crear un único servidor externo solo para MySQL pero el problema es que los servidores más alegados llegan a cargar en 7 segundos cuando la base de datos está en otra región. Y cargas de 1,3 segundos cuando está el mismo país.

Así que noto mucho el tener la base de datos fuera de la region ya que el servidor Nginx necesita escribir y leer la base de datos.
No solo lee. Si solo leyera el memcached ayudaría en esta situación.

Espero haberme explicado.


Enviado desde mi iPhone utilizando Tapatalk
 
Si necesitas sincronización en tiempo real.. las latencias pueden ser críticas.

Si no mira Percona https://www.percona.com/doc/percona-xtradb-cluster/5.6/features/multimaster-replication.html su solución mysql para master tu master te servirá.. y es muy sencilla de implementar. Podrás escribir en cualquier de los servers mysql que tengas y los datos se replicarán de uno otros.

El único problema son las latencias, que te pueden desincronizar la información de una base de datos y otras.
 
Si necesitas sincronización en tiempo real.. las latencias pueden ser críticas.

Si no mira Percona https://www.percona.com/doc/percona-xtradb-cluster/5.6/features/multimaster-replication.html su solución mysql para master tu master te servirá.. y es muy sencilla de implementar. Podrás escribir en cualquier de los servers mysql que tengas y los datos se replicarán de uno otros.

El único problema son las latencias, que te pueden desincronizar la información de una base de datos y otras.

Gracias.

Por ahora en producción tengo dos instancias de 1gb RAM que soportan 1 millón de vistas diarias con cargas de 133ms.

La latencia es importante para mí.
No tanto en la sincronización de datos ya que eso solo me afecta a la parte de admin que ven las estadísticas.
Sino al tráfico que necesito que tenga la mínima latencia por país.

Esto lo consigo con servidores en varios países.
Aunque por ahora en producción solo tengo dos.


De todas las opciones que he probado fuera de producción la que más me a gustado es Cluster Galera.

Aunque me encontró errores muy tontos al instalar los paquetes desde el propio ubunto.

Errores que no me puedo creer.

Ejemplo.

Instaló MariaDB y cuando inició da error porque no encontrar el MySQL.stock

Y cuando instaló mysql me pasa exactamente igual.

Todos los demás paquetes todo bien.

Pero tanto una base de datos como otra.
Instaladas en un ubuntu 16.04 de digitalocean me encontró esos problemas.

Es una cosa que solo me pareció curiosa.

Que se instale una aplicación y ni ellas misma sepa dónde está lo que tiene que iniciar.


Enviado desde mi iPhone utilizando Tapatalk
 
A por cierto a todo esto.
Mi base de datos contiene una única base de datos de 2,1GB.
Crece más o menos a unos 100MB al día.
Ya que la parte estadística ocupa lugar.
Pero no veo ninguna latencia en ese sentido.
Aunque si es verdad que a un admin le lleva unos segundos ver todas las gráficas de visitas.


Enviado desde mi iPhone utilizando Tapatalk
 
Al final lo importante es la cantidad de datos insertados / modificados. Pues eso es lo que se transfiere. 100 mb/día no es excesivo posiblemente casi no se notará, con lo que cualquier sistema de sincronización te ira bien.

Por mi experiencia, Percona se comporta bien y evita muchos problemas. Respecto a los otros que comentas no he tenido nada en producción, por lo que no puedo decirte nada. Pero 100 mb creo que "casi" te ira bien siempre.. aunque este lejano.
 
Eso se suele hacer con automatizaciones y no puedes mantener siempre cada segundo una sincronizacion a la larga aumenta la latencia y es malo para la web se recomienda hacerlo cada x tiempo,

lo mas recomendable es cada 1 hora, y la syns lo haces de modo de aplicar desde una sola Base a las replicas.
 
Atrás
Arriba