Existe uma maneira de fazer logs lentos do MySQL para iniciar um novo arquivo de log todos os dias? No momento, é apenas um único arquivo grande e tem que grep linhas para todos os dias. Seria muito mais conveniente ter arquivos separados para os logs lentos de cada dia.
Eu tenho que configurar um my.cnf ou algum recurso linux?
Atualizar Como Aaron aponta, há a chance de copiar e truncar algumas entradas. Portanto, o método mais seguro é mover e
FLUSH
.Original
Este artigo tem o princípio básico para rotacionar o log de consulta lento que eu uso. Basicamente, você precisa copiar o log lento para um novo arquivo e truncar o conteúdo do slow.log:
Se você apenas mover o log lento para um novo arquivo e criar um novo 'slow.log', não funcionará porque o arquivo movido ainda possui o mesmo inode e o mysql ainda o mantém aberto. Suponho que mover o arquivo e, em seguida, emitir um
FLUSH SLOW LOGS
comando funcionaria, pois isso fecha o arquivo e reabre, mas acho que copiar e truncar é igualmente eficaz e não requer login no mysql.Seu artigo menciona o uso de logrotate no Linux, mas acabei de fazer um cronjob para executar uma vez por dia à meia-noite para fazer isso por mim.
Além disso, para resolver o problema de replicação em
FLUSH LOGS
:Portanto, não, como essas instruções não são gravadas no log binário, elas não interferirão na replicação. Para seus propósitos, eu especificaria
FLUSH SLOW LOGS
apenas fechar/abrir o log de consulta lenta.use Logrotate.d para girar diariamente os arquivos e manter quantos dias quiser ou movê-los ... em seguida, emita um flush-logs do mesmo script para fazer o MySQL iniciar um novo arquivo .... tendo isso no log girar, definido como diário deve obter o que você deseja ..
Espero que algum dia eles implementem algo semelhante a 'expire_log_days' para logs de depuração como genlog e log lento
Todo mundo está acostumado com este, o bom e velho arquivo de texto.
Basta executar o seguinte para liberar um log lento todos os dias
PASSO 01) Desligue o log de consultas lentas
PASSO 02) Copie o arquivo de texto
PASSO 03) Truncar o arquivo para zero bytes
PASSO 04) Ative o log de consultas lentas
Você pode alternar
log-output=TABLE
e lidar com isso como uma tabela para consulta.PASSO 01) Converter mysql.slow_log de CSV para MyISAM
PASSO 02) Indexar a tabela
PASSO 03) Ativar formato de log para ser TABLE
PASSO 04)
service mysql restart
Depois de inicializar o mysqld, as entradas de log lentas são registradas na tabela MyISAM mysql.slow_log;
Para rotacionar as entradas antes da meia-noite, você pode fazer algo assim:
e isso é tudo para logs lentos...