Tenho a tarefa de obter uma cópia de uma tabela em um servidor MySQL 4.0 sincronizado com um banco de dados completamente diferente em um servidor MySQL 5.6 a cada poucos minutos com o objetivo de ter essa tabela disponível durante uma fase de migração para um aplicativo realmente antigo. Basicamente isso:
10.10.10.10:oldb.table -> 20.20.20.20:newdb.table
A tabela tem aproximadamente 65.000 linhas e aproximadamente 18 MB.
Obviamente não posso usar a replicação com a versão 4.0. Procurei usar mysqlhotcopy, mas parece que ele copia apenas bancos de dados inteiros e preciso que a tabela resida em um banco de dados diferente no host de destino. Também examinei o uso do mysqldump, no entanto, não posso descartar a tabela no novo servidor para que os novos dados sejam inseridos, resultando em consultas que veem uma tabela vazia e, se eu usar --insert-ignore --no-create -db --no-create-info ele ainda não considera as linhas excluídas na tabela de origem. Também procurei selecionar todas as linhas da tabela existente e fazer um REPLACE INTO ou INSERT/UPDATE ON DUPLICATE KEY, mas isso também não levaria em consideração as linhas que foram excluídas da tabela de origem. Alguma ideia de como fazer isso?
Isso parece interessante e pode (apenas pode) ser uma solução para o seu problema. Ele mostra como um servidor 4.1 pode simular procedimentos armazenados (SPs - não disponíveis até a versão 5 do servidor MySQL) usando o mecanismo de armazenamento federado. Basicamente, mostra que um servidor 5.x pode acessar dados em um servidor 4.x e até atualizar esses dados. Também mostra que você pode usar 5.x para ler os dados também. Este é provavelmente um bom ajuste para seus requisitos, no entanto, o mecanismo federado não oferece suporte a transações. Também é abordado aqui (Morgan Tocker é um gerente da comunidade MySQL).