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

Como posso sincronizar duas tabelas MySQL que possuem as mesmas estruturas e servidor diferente


Há algumas opções. Uma é configurar a replicação dentro do MySQL, que copiará automaticamente os dados entre os servidores e os manterá sincronizados automaticamente, com uma granularidade de alguns segundos enquanto os dados circulam. A desvantagem é que você precisa expor pelo menos o servidor mestre à rede para permitir conexões TCP.

Externamente, você pode fazer mysqldumps regulares no servidor A, copiar para o servidor B, carregar no mysql e pronto. Isso terá uma granularidade de qualquer intervalo de tempo em que você execute a sequência dump/copy/load. A desvantagem é que o mysqldump bloqueia as tabelas enquanto está funcionando. Se você tiver um banco de dados grande, será bloqueado das tabelas do servidorA enquanto o despejo avança e bloqueado do servidorB à medida que os dados são carregados. E carregar um dump é muito mais lento do que fazer o dump em primeiro lugar, já que o mysql faz todos os tipos de limpeza interna (atualizações de chaves, atualizações de metadados de tabelas, etc...) durante o carregamento.

Para a terceira opção, você pode escrever um sincronizador que compare as linhas entre os dois bancos de dados e faça as atualizações conforme necessário. No entanto, você está sugando o conteúdo de um servidor para o outro e fazendo operações linha por linha. Além disso, ter que lidar com qualquer atualização de relação chave estrangeira dependente/filho também, e isso ficará complicado rapidamente. Nesse ponto, talvez seja melhor usar a opção mysqldump.

Claro, você deve atualizar seu MySQL para algo mais moderno. v4.x está muito desatualizado. Você deve estar executando pelo menos uma versão 5.0, de preferência uma versão 5.1.