Tengo una aplicación SpringBoot ejecutándose en una arquitectura multiusuario.
Tengo dos bases de datos Administrador y Cliente (ambas son MySQL) y ambas bases de datos tienen una tabla de Usuario
El cliente puede agregar usuarios a la tabla de usuarios, pero necesito que se sincronicen en la tabla de usuarios de la base de datos de administración.
¿Hay alguna manera de que pueda lograr esto?
He leído sobre migraciones de rutas migratorias, pero creo que funciona más en cambios de esquema de base de datos y no en valores.
Ignore mis errores ya que esta es mi primera pregunta, cualquier ayuda sería apreciada.
Esto parece una solución a su problema:
SymmetricDS es un software que replica tablas de bases de datos relacionales entre varias bases de datos. También se puede utilizar para replicar archivos y directorios entre varios hosts. Utiliza un protocolo ligero basado en la web para enviar y recibir datos, lo que facilita el trabajo con cortafuegos. La replicación se realiza en segundo plano de forma asíncrona, lo que permite cambios de datos en modo fuera de línea. Es compatible con la mayoría de las plataformas de bases de datos comerciales y de código abierto.
¿Como funciona? Los activadores se instalan en la base de datos para garantizar que se capturen los cambios en los datos. Esto significa que las aplicaciones continúan utilizando la base de datos como de costumbre sin ningún software de controlador especial. Los disparadores están escritos para ser lo más pequeños y eficientes posible. El enrutamiento y la sincronización de datos se realizan fuera de la base de datos en el proceso de SymmetricDS.
SymmetricDS admite muchas bases de datos y puede replicarse en diferentes bases de datos, incluidas Oracle, MySQL, MariaDB, PostgreSQL, MS SQL y muchas más.
Debe crear algún evento desde el flujo donde el cliente agrega un usuario a la tabla de usuarios.
Si este flujo de "cliente" está en el mismo servicio de Java, puede utilizar el Manejo de eventos asíncronos de Spring o tener un método (que hace la copia de datos) marcado con @Async. Esto asegura que la copia de datos ocurra en un hilo separado.
Si el flujo del "cliente" está en un servicio Java diferente, se puede usar cualquier modelo de editor-suscriptor (algunos marcos de trabajo de código abierto disponibles son kafka, rabbitmq, etc.).
Ahora, para conectarse a dos fuentes de datos al mismo tiempo, RoutingDataSource de Spring será útil en este escenario, ya que funciona en la "clave de búsqueda" para elegir la fuente de datos. O bien, puede codificar dos beans de fuente de datos en su configuración (ya que está arreglado en su caso).