Pregunta

Mi pregunta es muy parecida a esta . Sin embargo, estoy en MySQL y estoy buscando la "tecnología más baja". solución que puedo encontrar.

La situación es que tengo 2 bases de datos que deberían tener los mismos datos, pero se actualizan principalmente cuando no pueden contactarse entre sí. Sospecho que hay algún tipo de agrupación o maestro / esclavo que podría sincronizarlos bien. Sin embargo, en mis casos es una exageración importante, ya que es solo una base de datos reutilizable para mi propio uso.

¿Cuál es una buena manera de hacer esto?

Mi enfoque actual es tener una tabla federada en uno de ellos y, de vez en cuando, rellenar los datos por cable al otro con una inserción / selección. Se vuelve un poco complicado tratando de lidiar con las claves primarias y lo que no. ( insert ignore parece no funcionar correctamente)

p.s. Puedo crear fácilmente una consulta que seleccione las filas para transferir.

¿Fue útil?

Solución 2

Mi solución actual es

  • configurar una tabla federada en el cuadro de origen que toma la tabla en el cuadro de destino
  • configure una vista en el cuadro de origen que seleccione las filas que se actualizarán (como una combinación de la tabla federada)
  • configure otra tabla federada en el cuadro de destino que tome la vista en el cuadro de origen
  • emita un INSERT ... SELECT ... ON DUPLICATE UPDATE en el cuadro de destino para ejecutar el pull.

Supongo que podría tomar la tabla de origen y hacerlo todo de una vez, pero según los registros de consultas que he estado viendo, supongo que terminaría con aproximadamente 20,000 consultas en ejecución o aproximadamente 100-300MB de transferencia de datos dependiendo de cómo sucedan las cosas. La configuración anterior vendida da como resultado unas 4 consultas y un poco más de datos transferidos de los que realmente debían ser.

Otros consejos

La replicación incorporada de MySQL es muy fácil de configurar y funciona bien incluso cuando las bases de datos están desconectadas la mayor parte del tiempo. Yo diría que configurar esto sería mucho más simple que cualquier solución personalizada.

Consulte http://www.howtoforge.com/mysql_database_replication para obtener instrucciones, debe estar listo y ejecutándose en 10-15 minutos y no tendrá que pensarlo nuevamente.

El único inconveniente que puedo ver es que es asíncrono, es decir. debe tener un maestro designado que obtenga todos los cambios.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top