Nossa tabela principal, tblLink
, terá sua chave primária como estrangeira em algumas outras tabelas também e uma das tabelas será tblMainData
que ao longo do tempo terá milhões de linhas.
Gostaríamos de manter apenas 3 meses de dados.
O resto gostaríamos de limpar e manter para gerar relatórios de histórico. Qual é o melhor mecanismo a ser usado nesse cenário?
Devemos executar uma tarefa cron para continuar excluindo dados com mais de 3 meses? Em caso afirmativo, como podemos armazená-lo em um .sql
arquivo?
Como você tem
foreign keys
em suas tabelas, não pode fazer o particionamento diretamente. Como o particionamento não suporta chaves estrangeiras no MySQL.Você pode optar pelo particionamento , mas terá que criar uma solução alternativa para isso. Você deve garantir sua integridade usando gatilhos para (INSERT/UPDATE/DELETE) nas tabelas.
ou seja, a inserção na tabela filho só será permitida se o registro correspondente existir na tabela pai. Você tem que manter toda essa integridade (INSERT/UPDATE/DELETE) usando gatilhos.
Em seguida, você pode criar o particionamento na tabela trimestralmente e, em seguida, descartar a partição.
para criar os arquivos .sql você pode usar
--where
a cláusula commysqldump
ela criará o backup em .sql
formato de arquivo.Você também pode criar os csvs para seus dados antigos para referência futura.