Estamos ejecutando una aplicación Java PoS (Punto de venta) en varias tiendas, con un backend MySql. Quiero mantener las bases de datos en las tiendas sincronizadas con una base de datos en un servidor host.
Cuando ocurren algunos cambios en una tienda, deben actualizarse en el servidor host. ¿Cómo logro esto?
Respuestas:
La replicación no es muy difícil de crear.
Aquí hay algunos buenos tutoriales:
http://aciddrop.com/2008/01/10/step-by-step-how-to-setup-mysql-database-replication/
http://www.ghacks.net/2009/04/09/set-up-mysql-database-replication/
http://dev.mysql.com/doc/refman/5.5/en/replication-howto.html
http://www.lassosoft.com/Beginners-Guide-to-MySQL-Replication
Aquí algunas reglas simples que tendrás que tener en cuenta (hay más, por supuesto, pero ese es el concepto principal):
De esta forma evitarás errores.
Por ejemplo: si su secuencia de comandos se inserta en las mismas tablas tanto en el maestro como en el esclavo, tendrá un conflicto de clave primaria duplicada.
Puede ver el "esclavo" como un servidor "de respaldo" que contiene la misma información que el maestro pero no puede agregar datos directamente, solo siga las instrucciones del servidor maestro.
NOTA: Por supuesto, puede leer desde el maestro y puede escribir en el esclavo, pero asegúrese de no escribir en las mismas tablas (maestro a esclavo y esclavo a maestro).
Recomendaría monitorear sus servidores para asegurarse de que todo esté bien.
Avísame si necesitas ayuda adicional
fuente
tres enfoques diferentes:
Enfoque clásico cliente / servidor: no coloque ninguna base de datos en las tiendas; simplemente haga que las aplicaciones accedan a su servidor. Por supuesto, es mejor si configura una VPN, pero simplemente envolver la conexión en SSL o ssh es razonable. Ventaja: es la forma en que se pensaron originalmente las bases de datos. Desventaja: si tiene una latencia alta, las operaciones complejas pueden volverse lentas, es posible que deba utilizar procedimientos almacenados para reducir la cantidad de viajes de ida y vuelta.
maestro / maestro replicado: como sugirió @Book Of Zeus. Contras: algo más complejo de configurar (especialmente si tiene varios talleres), romper cualquier máquina del taller podría comprometer potencialmente todo el sistema. Ventajas: mejor capacidad de respuesta, ya que las operaciones de lectura son totalmente locales y las operaciones de escritura se propagan de forma asincrónica.
operaciones fuera de línea + paso de sincronización: haga todo el trabajo localmente y de vez en cuando (puede ser una vez por hora, diariamente, semanalmente, lo que sea) escriba un resumen con todos los registros nuevos / modificados de la última operación de sincronización y envíelo al servidor. Ventajas: puede trabajar sin red, rápido, fácil de verificar (si el resumen es legible). Contras: no tienes información en tiempo real.
fuente
SymmetricDS es la respuesta. Admite múltiples suscriptores con replicación de datos asincrónica en una dirección o bidireccional. Utiliza tecnologías web y de bases de datos para replicar tablas entre bases de datos relacionales, casi en tiempo real si se desea.
API de Java completa y robusta que se adapta a sus necesidades.
fuente
Eche un vistazo a las herramientas de comparación de esquemas y datos en dbForge Studio para MySQL. Esta herramienta le ayudará a comparar, ver las diferencias, generar un script de sincronización y sincronizar dos bases de datos.
fuente