terça-feira, 14 de julho de 2020

Tabela de logs muito grande

Tive problemas com tamanho da tabela de logs, com mais de 80 milhões de registros, vou registrar aqui rapidamente a solução, depois volto para detalhar melhor.

A primeira ação foi Particionar a tabela mdl_logstore_standard_log no MySql, só esta tabela está ocupando 27GB. A opção de limpar os logs não foi considerada, pois por política adotamos manter os logs por pelo menos 5 anos. Para otimizar as consultas e consumo de memória no MySql optamos pelo particionamento usando a seguinte operação:

IMPORTANTE: Faça uma backup da sua base de dados antes de executar essa query e colocar o Moodle e modo manutenção, este processo pode ser demorado dependendo da quantidade de dados.

ALTER TABLE mdl_logstore_standard_log
PARTITION BY RANGE (id)
(  
    PARTITION p0 VALUES LESS THAN ( 20000000),
    PARTITION p1 VALUES LESS THAN ( 40000000),
    PARTITION p2 VALUES LESS THAN ( 60000000),
    PARTITION p3 VALUES LESS THAN ( 80000000),
    PARTITION p4 VALUES LESS THAN (100000000),
    PARTITION p5 VALUES LESS THAN (120000000),
    PARTITION p6 VALUES LESS THAN (140000000),
    PARTITION p7 VALUES LESS THAN (160000000),
    PARTITION pn VALUES LESS THAN MAXVALUE
);

Um comentário:

  1. Olá, Eduardo.

    Teria mais detalhes para nos passar sobre o particionamento da tabela de log?

    Um passo a passo seria muito bem vindo.

    Ricardo

    ResponderExcluir