Eu tenho uma tarefa diária que coleta dados de 3 servidores MySql e, em seguida, envia esses dados agregados de volta para cada um dos servidores, excluindo os dados dos dias anteriores. Todos os servidores são MySql. Eu gostaria de colocar isso em um procedimento armazenado.
Eu tenho procurado uma maneira de conectar de um servidor MySql para outro, executar uma consulta, próximo servidor - enxaguar e repetir. Além de não encontrar nenhum exemplo de procedimento armazenado que se conecte a outro servidor MySql, minha impressão imediata é que isso não é realmente aceitável, nem intencional.
Posso selecionar um arquivo de saída que cria um CSV. Existe alguma maneira de forçar um documento Xml? Não quero ter que ler em uma tabela de dados apenas para obter Xml. Obviamente, Xml não funcionará com o método Bulkload, funcionará?
Quais são minhas opções realistas? Uma preocupação sobre a seleção em um arquivo de saída é o uso de caracteres estranhos: ' , \ \\ & @ `` / //
etc... como esses caracteres afetarão o processo de carregamento em massa?
Costumo evitar o mecanismo de armazenamento FEDERATED por três (3) razões:
O que fazer ???
Uma possibilidade é usar mysqldump e mesclá-los
EXEMPLO
Assumindo que todas as tabelas têm estruturas idênticas
Assumindo que todas as tabelas não estão usando IDs auto_increment
Assumindo que todas as tabelas são InnoDB
No servidor que combinará as três tabelas, crie quatro (4) bancos de dados de importação (operação única):
O processo de importação é mais ou menos assim
mysqldump as três (3) tabelas
Carregue os mysqldumps nos bancos de dados de importação separados em paralelo:
Em seguida, combine os dados.
Agora, execute a tarefa que você já possui na tabela ImportCombined.tbname.
"Você preenche estas etapas"
Então, quando a tabela estiver pronta para ser exportada, mysqldump e copie 2 vezes:
Como mostrado a partir dessas etapas, essas coisas devem ser shell script e talvez crontab'd.
Aqui está outra manobra: Se as tabelas são MyISAM, você pode copiar as tabelas MyISAM (arquivos .frm, .MYD e .MYI para cada tabela) em outras pastas (bancos de dados aos olhos do mysqld) em vez de fazer mysqldumps e executar operações semelhantes às mencionadas anteriormente. Certifique-se de que nenhuma gravação nas tabelas ocorra durante a cópia.
Você já pensou em usar uma ferramenta ETL como http://www.pentaho.com/ para isso?
Parece ideal..