sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo sincronizar dos tablas MySQL que tienen la misma estructura y un servidor diferente?

Hay algunas opciones. Una es configurar replicación dentro de MySQL, que copiará automáticamente los datos entre los servidores y los mantendrá sincronizados automáticamente, con una granularidad de unos segundos a medida que los datos vuelan. La desventaja es que debe exponer al menos el servidor maestro a la red para permitir las conexiones TCP.

Externamente, puede hacer mysqldumps regulares en el servidor A, copiar al servidor B, cargar en mysql y listo. Esto tendrá una granularidad de cualquier intervalo de tiempo en el que ejecute la secuencia de volcado/copia/carga. La desventaja es que mysqldump bloquea las tablas mientras funciona. Si tiene una base de datos grande, se le bloqueará el acceso a las tablas del servidor A mientras avanza el volcado, y el servidor B se bloqueará a medida que se carguen los datos. Y cargar un volcado es mucho más lento que hacer el volcado en primer lugar, ya que mysql realiza todo tipo de limpieza interna (actualizaciones de claves, actualizaciones de metadatos de tablas, etc.) durante la carga.

Para la tercera opción, podría escribir un sincronizador que compare filas entre las dos bases de datos y realice actualizaciones según sea necesario. Sin embargo, entonces estás transfiriendo el contenido de un servidor al otro y haciendo operaciones fila por fila. Además de tener que manejar cualquier actualización de relación secundaria/clave foránea dependiente también, y esto se complicará rápidamente. En ese momento, es mejor que utilice la opción mysqldump.

Por supuesto, debe actualizar su MySQL a algo más moderno. v4.x está muy desactualizado. Debería ejecutar al menos una versión 5.0, preferiblemente una versión 5.1.