Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Perl:Wie kopiert/spiegelt man entfernte MYSQL-Tabelle(n) in eine andere Datenbank? Eventuell auch andere Struktur?

Die beiden Begriffe, nach denen Sie suchen, sind entweder "Replikation " oder "ETL".

Erstens, Replikationsansatz.

Nehmen wir an, Ihr Admin-Server hat die Tabellen T1, T2, T3 und Ihr öffentlicher Server hat die Tabellen TP1, TP2.

Was Sie also tun möchten (da Sie, wie Sie sagten, unterschiedliche Tabellenstrukturen haben), ist:

  1. Nehmen Sie die Tabellen vom öffentlichen Server und erstellen Sie exakte Kopien dieser Tabellen auf dem Verwaltungsserver (TP1 und TP2).

  2. Erstellen Sie einen Trigger für die Originaltabellen des Verwaltungsservers, um die Daten von T1/T2/T3 in die Kopie von TP1/TP2 des Verwaltungsservers einzufügen.

  3. Sie müssen auch die anfängliche Datenfüllung von T1/T2/T3 in die Kopie von TP1/TP2 des Verwaltungsservers durchführen. Ähm.

  4. Richten Sie die "Replikation ein " vom TP1/TP2 des Admin-Servers zum TP1/TP2 des öffentlichen Servers

Ein anderer Ansatz besteht darin, ein Programm zu schreiben (solche Programme heißen ETL - Extract-Transform-Load), das die Daten aus T1/T2/T3 auf dem Admin-Server (dem "E"-Teil von "ETL") extrahiert und die Daten massiert in ein Format umzuwandeln, das zum Laden in TP1/TP2-Tabellen geeignet ist (der „T“-Teil von „ETL“), diese Dateien (über ftp/scp/whatnot) auf einen öffentlichen Server zu übertragen und die zweite Hälfte des Programms (das „L“) Teil lädt die Dateien in die Tabellen TP1/TP2 auf dem öffentlichen Server. Beide Hälften des Programms würden durch cron gestartet oder Ihren Terminplaner Ihrer Wahl.

Es gibt einen Artikel mit einem sehr guten Beispiel dafür, wie man mit dem Erstellen von Perl/MySQL ETL beginnt:http://oreilly.com/pub/a/databases/2007/04/12/Bauen-eines-Datenlagers -mit-mysql-und-perl.html?page=2

Wenn Sie es vorziehen, keine eigenen zu erstellen, finden Sie hier eine Liste von Open-Source-ETL-Systemen, von denen noch nie eines verwendet wurde, daher keine Meinung zu ihrer Benutzerfreundlichkeit/Qualität:http://www.manageability.org/blog/stuff/open-source-etl