sql >> Databasteknik >  >> RDS >> Mysql

Perl:Hur kopierar/speglar man fjärrstyrda MYSQL-tabeller till en annan databas? Eventuellt annan struktur också?

De två termerna du letar efter är antingen "replikering " eller "ETL".

Först, replikeringsmetod.

Låt oss anta att din administratörsserver har tabellerna T1, T2, T3 och din offentliga server har tabellerna TP1, TP2.

Så vad du vill göra (eftersom du har olika tabellstrukturer som du sa) är:

  1. Ta tabellerna från den offentliga servern och skapa exakta kopior av dessa tabeller på adminservern (TP1 och TP2).

  2. Skapa en utlösare på adminserverns ursprungliga tabeller för att fylla i data från T1/T2/T3 till adminserverns kopia av TP1/TP2.

  3. Du måste också göra initial datapopulation från T1/T2/T3 till administratörsserverns kopia av TP1/TP2. Duh.

  4. Konfigurera "replikeringen " från adminserverns TP1/TP2 till offentliga serverns TP1/TP2

Ett annat tillvägagångssätt är att skriva ett program (sådana program kallas ETL - Extract-Transform-Load) som kommer att extrahera data från T1/T2/T3 på administratörsservern ("E"-delen av "ETL"), massera data till ett format som lämpar sig för att laddas in i TP1/TP2-tabeller ("T"-delen av "ETL"), överföra (via ftp/scp/whatnot) dessa filer till en offentlig server och den andra halvan av programmet ("L") del kommer att ladda filerna i tabellerna TP1/TP2 på den offentliga servern. Båda halvorna av programmet skulle startas av cron eller din valda schemaläggare.

Det finns en artikel med ett mycket bra exempel på hur man börjar bygga Perl/MySQL ETL:http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse -with-mysql-and-perl.html?page=2

Om du föredrar att inte bygga ditt eget, här är en lista över ETL-system med öppen källkod, aldrig använt något av dem så inga åsikter om deras användbarhet/kvalitet:http://www.manageability.org/blog/stuff/open-source-etl



  1. Spring-Boot, kan inte spara unicode-sträng i MySql med spring-data JPA

  2. Exportera en stor MySQL-tabell som flera mindre filer

  3. Ändra nästa rullgardinsvärde med föregående rullgardinsmeny vid ändringshändelse

  4. MySQL hoppa över de 10 första resultaten