Replicação MySQL nos últimos 30 dias

1

Existe uma maneira de definir a replicação do MySQL para adicionar novas linhas e excluir as linhas antigas? por exemplo eu tenho tabela no mestre MySQL que remonta a cerca de 5 anos. Gostaria que a replicação se mantivesse atualizada apenas com os últimos 30 dias. Qualquer coisa após 30 dias será excluída da replicação. Como eu poderia conseguir isso?

  • Agradecemos antecipadamente
por Bbbh 06.08.2010 / 04:19

4 respostas

5

Não, uma réplica que não seja uma réplica do original não é uma réplica.

    
por 06.08.2010 / 08:23
0

Você não pode chegar aonde deseja ir por esse caminho. Seu primeiro problema é que o MySQL precisa de uma maneira de determinar quais dados devem ser mantidos e o que deve ser excluído. Se você não tiver dependências entre tabelas, poderá fazê-lo com um registro de data e hora ou um campo de data em cada tabela. Nesse caso, basta executar uma consulta simples em cada tabela.

Existe a possibilidade de você fazer isso por meio dos logs, mas isso seria complicado e propenso a erros.

    
por 06.08.2010 / 14:51
0

Embora você não possa fazer isso com suporte nativo ao MySQL, como muitos outros apontaram, na maioria dos casos isso pode ser feito facilmente com um script. No entanto, a facilidade dependerá da complexidade do seu esquema.

Veja um exemplo de uma consulta que exclui de uma tabela que possui um campo de carimbo de data / hora usando funções de data e hora ...

delete from table where DATE_ADD( DATE_FORMAT( table.timestamp,'%Y-%m-%d %T'), INTERVAL 4 HOUR) < NOW()
    
por 06.08.2010 / 15:34
0

Depois de configurar a replicação e obter os bancos de dados idênticos, emita 'stop slave' e exclua os dados antigos. Não reaparecerá a menos que o mestre faça algo envolvendo essas linhas. Então 'comece escravo'.

    
por 07.08.2012 / 23:44

Tags