Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tutorial MySQL – Gerenciando Logs do Servidor MySQL:Girar, Comprimir, Reter e Excluir

O MySQL Server gera vários logs que podem ajudá-lo a monitorar as atividades do servidor. No entanto, quando esses logs são ativados, eles podem aumentar de tamanho e começar a ocupar muito espaço em disco. É por isso que é importante ter uma maneira automatizada de arquivar e preservar os arquivos de log do MySQL por um determinado período, além de excluir os antigos. Nesta postagem do blog, descrevemos algumas práticas recomendadas para configurar e gerenciar logs de erros do MySQL, logs gerais e logs de consulta lenta para suas implantações do MySQL.

Configurando o log do servidor MySQL


Vejamos como configurar os 3 tipos de logs a seguir:

Registro de erros

Registra todos os problemas encontrados durante a inicialização, execução ou interrupção do mysqld. Este log pode ser habilitado tendo a seguinte opção no arquivo /etc/my.cnf:

  • log_error=/var/log/mysql/mysqld.log

Registro de consulta geral

Registra conexões de clientes estabelecidas e declarações recebidas de clientes. Este log pode ser habilitado tendo a seguinte opção no arquivo /etc/my.cnf:

  • general_log=ON
  • general_log_file=/var/log/mysql/general.log

Registro de consulta lenta

Registra consultas que levaram mais de long_query_time segundos para serem executadas. Este log pode ser habilitado pela seguinte opção no arquivo /etc/my.cnf:

  • slow_query_log=ON
  • slow_query_log_file=/var/log/mysql/mysql-slowquery.log

Configuração de critérios para rotação de log

Como exemplo, vamos ter alguns critérios para gerenciar logs de consultas gerais do MySQL. Podemos criar um conjunto adequado de critérios para o gerenciamento de logs fazendo as seguintes perguntas:

P:Qual é o tamanho máximo que o arquivo de log pode aumentar?

R:Digamos que possa crescer até 300 MB, após o que precisa ser girado e compactado.

P:Qual é a frequência com que você deseja que o arquivo de log seja girado?

R:Podemos dizer que queremos que os logs sejam girados diariamente.

P:Quantos arquivos de log antigos você deseja reter?

R:Gostaríamos de manter os últimos 30 arquivos de log.

Com base nos critérios acima, o espaço geral em disco necessário para o gerenciamento geral do log de consultas é de cerca de 1,2 GB. Assumindo uma taxa de compactação de 90% – teremos 30 arquivos de log compactados de 30 MB cada e um arquivo de log ao vivo de cerca de 300 MB.

Gerenciando logs do servidor MySQL:girar, compactar, reter e excluirClique para tuitar

Gerenciando os logs usando o utilitário logrotate do Linux

logrotate é um utilitário Linux que ajuda na administração eficiente de arquivos de registro e oferece opções para rotação automática, compactação e remoção de arquivos de registro. Os critérios estabelecidos acima podem ser configurados para o utilitário logrotate criando um arquivo de configuração na pasta /etc/logrotate.d.

Vamos chamar esse arquivo de configuração de mysqlgeneral e o conteúdo do arquivo será:

/var/log/mysql/general.log{
        compress
        dateext
        maxsize 300M
        copytruncate
        maxage 365
        dateformat -%Y%m%d%s
        daily
        rotate 30
        notifempty
}

Com as opções acima para logrotate, os logs de consulta gerais são alternados diariamente ou quando o tamanho do arquivo de log excede 300 MB. Os logs antigos são compactados e 30 desses arquivos serão preservados. A rotação de log será ignorada se o arquivo de log estiver vazio devido à configuração 'notifempty'.

A opção ‘copytruncate’ é para garantir que o arquivo de log atual nunca seja excluído durante a rotação e apenas seu conteúdo seja truncado. Isso é importante, pois alguns aplicativos esperam que o arquivo de log esteja sempre disponível e não é possível excluir o log sem interromper o aplicativo primeiro.

Agora que a configuração de rotação de log está definida para o log de consulta geral, o utilitário logrotate deve ser executado para que a configuração acima seja executada. Isso geralmente é feito por meio de um cron job. Podemos definir isso para ser executado a cada hora colocando o script logrotate no diretório /etc/cron.hourly:

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

Então, com algumas etapas simples, configuramos a rotação de logs para logs gerais do MySQL com base em nossos critérios. A mesma abordagem pode ser seguida para registros de erros do MySQL e registros de consultas lentas. Confira estes outros posts para saber mais sobre como otimizar suas implantações do MySQL:

  • Calculando o tamanho do pool de buffers InnoDB para seu servidor MySQL
  • Tutorial MySQL – Configurando e gerenciando SSL em seu servidor MySQL
  • Explicação da estrutura de alta disponibilidade do MySQL – Parte I:introdução