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

Perl:¿Cómo copiar/reflejar tablas MYSQL remotas en otra base de datos? Posiblemente una estructura diferente también?

Los dos términos que está buscando son "replicación " o "ETL".

Primero, enfoque de replicación.

Supongamos que su servidor de administración tiene tablas T1, T2, T3 y su servidor público tiene tablas TP1, TP2.

Entonces, lo que quieres hacer (ya que tienes diferentes estructuras de tablas como dijiste) es:

  1. Tome las tablas del servidor público y cree copias exactas de esas tablas en el servidor de administración (TP1 y TP2).

  2. Cree un activador en las tablas originales del servidor de administración para completar los datos de T1/T2/T3 en la copia del servidor de administración de TP1/TP2.

  3. También deberá completar los datos iniciales de T1/T2/T3 en la copia del servidor de administración de TP1/TP2. Vaya.

  4. Configure la "replicación " del TP1/TP2 del servidor de administración al TP1/TP2 del servidor público

Un enfoque diferente es escribir un programa (dichos programas se llaman ETL - Extraer-Transformar-Cargar) que extraiga los datos de T1/T2/T3 en el servidor de administración (la parte "E" de "ETL"), masajee los datos en un formato adecuado para cargar en tablas TP1/TP2 (la parte "T" de "ETL"), transferir (a través de ftp/scp/whatnot) esos archivos al servidor público y la segunda mitad del programa (la "L") part cargará los archivos en las tablas TP1/TP2 en el servidor público. Ambas mitades del programa serían lanzadas por cron o el programador de su elección.

Hay un artículo con un muy buen ejemplo de cómo empezar a construir Perl/MySQL ETL:http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse -con-mysql-y-perl.html?page=2

Si prefiere no crear el suyo propio, aquí hay una lista de sistemas ETL de código abierto, nunca usó ninguno de ellos, por lo que no hay opiniones sobre su usabilidad/calidad:http://www.manageability.org/blog/stuff/open-source-etl