Parece que o processo mysql ( mysqld_safe
, eu acredito) é incapaz de criar o arquivo de log após você usar o logrotate para movê-lo para fora do caminho e enviar um HUP? Se eu estiver bem aqui, me avise.
Supondo que eu não esteja fora, há algumas opções aqui:
- Mova o log para um diretório de propriedade do mesmo usuário que o processo mysqld_safe. Por exemplo, crie um diretório
/var/log/mysqld/
e salve os arquivos de log lá. Se o diretório é mysql: mysql 700, então novos arquivos podem ser criados sem um problema. - Use o método copy / truncate logrotate em vez do método move / SIGHUP. O método copy / truncate copiará os arquivos de log atuais (
mysqld.slow.log
) para um novo arquivo (mysqld.slow.log.1
) e truncará o arquivo original para zero bytes. Isso é útil se você não quiser interromper o processo que está gravando no log por algum motivo. A desvantagem, é claro, é que há sobrecarga de disco adicional ao copiar o arquivo original para um novo arquivo antes de limpar o arquivo original de volta para zero bytes. Isso é feito adicionando a opçãocopytruncate
à sub-rotina logrotate desse arquivo e removendo a seçãopostrotate
não mais necessária.