2012-09-13 134 views
5

Tengo una consulta. Tengo dos tablas en dos servidores diferentes. Ambas tienen la misma estructura. La tabla maestra en un servidor se actualiza diariamente, por lo que quiero un trabajo cron o un cron de script php para actualizar la segunda tabla esclava en un servidor diferente. He visto muchas secuencias de comandos pero ninguno resolvió mis requisitos.mysql sincronización de dos tablas de 2 bases de datos

+0

¿Actualizado de qué manera? Estructura, Datos, ... ¿cómo debería actualizarse? ¿Por qué muchos guiones no resolvieron sus necesidades? Cuáles son sus requisitos –

+0

su mysql ... no se trata de la estructura ... la información que sigue aumentando ... quiero un trabajo de php cron para hacerlo ... pero no sé cómo hacerlo de la manera más simple y más optimizada. No quiero seleccionar los datos de la tabla maestra y ponerlos en bucle hasta que se inserten en la tabla esclava. Eso lleva demasiado tiempo. – user1587161

+0

, por lo que agradecería si iam sugiriera alguna manera optimizada de hacerlo. – user1587161

Respuesta

7

No puedo creer que no hayas encontrado una secuencia de comandos adecuada para hacer esto. Dependiendo del ancho de banda de servidor a servidor y la conectividad, y el tamaño de datos de la tabla, se puede:

  • transferir directamente toda la tabla:

    mysqldump [options] sourcedatabase tablename \ 
        | mysql [options] --host remoteserver --user username ... 
    
  • transferencia de la mesa con la compresión de MySQL

    # same as above, mysql has the "-C" flag 
    
  • transferencia mediante cifrado y compresión SSH; MySQL se ejecuta de forma remota

    mysqldump [options] sourcedatabase tablename \ 
        | ssh -C [email protected] 'mysql [options]' 
    
  • transferencia usando el archivo SQL intermedio y rsync para transferir sólo modificaciones

    mysqldump [options] sourcedb tbl > dump.sql 
    rsync [-z] dump.sql [email protected]:/path/to/remote/dump.sql 
    ssh [email protected] "mysql [options] < /path/to/remote/dump.sql" 
    

la tabla son todos simples anteriormente sobrescribe, los datos remota se pierde y se sustituye por el maestro dupdo. El mysqldump-plus-rsync-plus-ssh se ejecuta en un tiempo aproximadamente proporcional a las modificaciones, lo que significa que si tiene un volcado de SQL de 10 GB y agrega una docena de INSERTOS, la etapa de transferencia necesitará como mucho un par de segundos para sincronizar el dos archivos SQL.

Para optimizar también la etapa de inserción, puede optar por la replicación completa de MySQL o necesitará una forma de identificar las operaciones en la tabla para replicarlas manualmente en el momento de la sincronización. Esto puede requerir alteraciones en la estructura de la tabla, p. agregando columnas "last-synced-on" y "needs-removing", o incluso introducción de tablas auxiliares.

1

Puede usar una solución simple: Data Synchronization tool en dbForge Studio for MySQL.

  1. Cree un proyecto de comparación de datos que compare y sincronice dos tablas en dos servidores MySQL diferentes.
  2. Ejecute la aplicación en el modo de línea de comandos utilizando el documento de proyecto de Comparación de datos creado (archivo * .dcomp).
Cuestiones relacionadas