Mysql
 sql >> Database >  >> RDS >> Mysql

Perl:come copiare/mirrorare le tabelle MYSQL remote su un altro database? Possibile anche struttura diversa?

I due termini che stai cercando sono "replica " o "ETL".

Primo, approccio di replica.

Supponiamo che il tuo server di amministrazione abbia le tabelle T1, T2, T3 e il tuo server pubblico abbia le tabelle TP1, TP2.

Quindi, quello che vuoi fare (dato che hai strutture di tabelle diverse come hai detto) è:

  1. Prendi le tabelle dal server pubblico e crea copie esatte di tali tabelle sul server di amministrazione (TP1 e TP2).

  2. Crea un trigger sulle tabelle originali del server di amministrazione per popolare i dati da T1/T2/T3 nella copia del server di amministrazione di TP1/TP2.

  3. Sarà inoltre necessario eseguire il popolamento iniziale dei dati da T1/T2/T3 nella copia del server di amministrazione di TP1/TP2. Eh.

  4. Imposta la "replica " dal TP1/TP2 del server di amministrazione al TP1/TP2 del server pubblico

Un approccio diverso consiste nello scrivere un programma (tali programmi sono chiamati ETL - Extract-Transform-Load) che estrae i dati da T1/T2/T3 sul server admin (la parte "E" di "ETL"), massaggia i dati in un formato adatto per il caricamento nelle tabelle TP1/TP2 (la parte "T" di "ETL"), il trasferimento (tramite ftp/scp/whatnot) quei file al server pubblico e la seconda metà del programma (la "L") parte caricherà i file nelle tabelle TP1/TP2 sul server pubblico. Entrambe le metà del programma verrebbero lanciate da cron o il tuo programmatore di scelta.

C'è un articolo con un ottimo esempio di come iniziare a costruire ETL Perl/MySQL:http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse -con-mysql-e-perl.html?page=2

Se preferisci non crearne uno tuo, ecco un elenco di sistemi ETL open source, mai utilizzati, quindi nessuna opinione sulla loro usabilità/qualità:http://www.manageability.org/blog/stuff/open-source-etl