Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Perl:Como copiar/espelhar tabelas MYSQL remotas para outro banco de dados? Possivelmente estrutura diferente também?


Os dois termos que você está procurando são "replication " ou "ETL".

Primeiro, a abordagem de replicação.

Vamos supor que seu servidor admin tenha as tabelas T1, T2, T3 e seu servidor público tenha as tabelas TP1, TP2.

Então, o que você quer fazer (já que você tem estruturas de tabela diferentes como você disse) é:

  1. Pegue as tabelas do servidor público e crie cópias exatas dessas tabelas no servidor admin (TP1 e TP2).

  2. Crie um gatilho nas tabelas originais do servidor admin para preencher os dados de T1/T2/T3 na cópia do TP1/TP2 do servidor admin.

  3. Você também precisará fazer o preenchimento inicial de dados de T1/T2/T3 na cópia do servidor admin de TP1/TP2. Duh.

  4. Configure a "replicação " do TP1/TP2 do servidor admin para o TP1/TP2 do servidor público

Uma abordagem diferente é escrever um programa (tais programas são chamados de ETL - Extract-Transform-Load) que extrairá os dados de T1/T2/T3 no servidor admin (a parte "E" de "ETL"), massageie os dados em formato adequado para carregar em tabelas TP1/TP2 (a parte "T" de "ETL"), transferir (via ftp/scp/whatnot) esses arquivos para o servidor público e a segunda metade do programa (o "L") parte irá carregar os arquivos nas tabelas TP1/TP2 no servidor público. Ambas as metades do programa seriam lançadas pelo cron ou seu agendador de escolha.

Há um artigo com um exemplo muito bom de como começar a construir Perl/MySQL ETL:http://oreilly.com/pub/a/databases/2007/04/12/building-a-data-warehouse -with-mysql-and-perl.html?page=2

Se você preferir não construir o seu próprio, aqui está uma lista de sistemas ETL de código aberto, nunca usei nenhum deles, então não há opiniões sobre sua usabilidade/qualidade:http://www.manageability.org/blog/stuff/open-source-etl