Visão geral dos logs de banco de dados do RDS para MySQL - Amazon Relational Database Service

Visão geral dos logs de banco de dados do RDS para MySQL

Você pode monitorar os seguintes tipos de arquivos de log do RDS para MySQL:

  • Log de erros

  • Log de consultas lentas

  • Log geral

  • Log de auditoria

O log de erros do RDS para MySQL é gerado por padrão. Você pode gerar a consulta lenta e os logs gerais definindo parâmetros no seu grupo de parâmetros do banco de dados.

Logs de erro do RDS para MySQL

O RDS para MySQL grava erros no arquivo mysql-error.log. Cada arquivo de log tem a hora em que foi gerado (em UTC) anexada ao seu nome. Os arquivos de log também possuem um carimbo de data/hora que ajuda você a determinar quando as entradas de log foram gravadas.

O RDS para MySQL grava no log de erros apenas na inicialização, no desligamento e quando encontra erros. Uma instância de banco de dados pode passar horas ou dias sem novas entradas gravadas no log de erros. Se você não vir nenhuma entrada recente, é porque o servidor não encontrou nenhum erro que tenha gerado uma entrada de log.

Por padrão, os logs de erros são filtrados para que apenas eventos inesperados, como erros, sejam exibidos. No entanto, os logs de erros também contêm algumas informações adicionais do banco de dados, por exemplo, o andamento da consulta, que não são mostradas. Portanto, mesmo sem erros reais, o tamanho dos logs de erros pode aumentar devido às atividades em andamento do banco de dados. Embora você possa ver determinado tamanho em bytes ou quilobytes para os logs de erros no AWS Management Console, eles poderão ter 0 byte quando você fizer download deles.

O RDS para MySQL grava o mysql-error.log no disco a cada cinco minutos. Ele acrescenta o conteúdo do log ao mysql-error-running.log.

O RDS para MySQL alterna o arquivo mysql-error-running.log de hora em hora. Ele retém os logs gerados durante as últimas duas semanas.

nota

Observe que o período de retenção é diferente entre o Amazon RDS e o Aurora.

Logs gerais e de consultas lentas do RDS para MySQL

É possível gravar o log de consultas lentas e o log geral do RDS para MySQL em um arquivo ou em uma tabela de banco de dados. Para isso, defina parâmetros em seu grupo de parâmetros de banco de dados. Para obter informações sobre como criar e modificar um grupo de parâmetros de banco de dados, consulte Trabalhar com grupos de parâmetros. Você deve definir esses parâmetros antes de visualizar o log de consultas lentas ou o log geral no console do Amazon RDS ou usando a API do Amazon RDS, a CLI do Amazon RDS ou os SDKs da AWS.

Você pode controlar o registro em log do RDS para MySQL usando os parâmetros nesta lista:

  • slow_query_log: para criar o log de consultas lentas, defina como 1. O padrão é 0.

  • general_log: para criar o log geral, defina como 1. O padrão é 0.

  • long_query_time: para evitar que as consultas de execução rápida sejam registradas no log de consultas lentas, especifique um valor para o tempo de execução de consultas mais curto a ser registrado, em segundos. O padrão é 10 segundos; o mínimo é 0. Se log_output = FILE, você poderá especificar um valor de ponto flutuante com resolução por microssegundo. Se log_output = TABLE, você deverá especificar um valor inteiro com a segunda resolução. Apenas as consultas cujo tempo de execução excede o valor long_query_time são registradas em log. Por exemplo, definir long_query_time como 0.1 impede que qualquer consulta que seja executada por menos de 100 milissegundos seja registrada.

  • log_queries_not_using_indexes: para registrar todas as consultas que não usam um índice no log de consultas lentas, defina como 1. As consultas que não usam um índice são registradas, mesmo que seu tempo de execução seja inferior ao valor do parâmetro long_query_time. O padrão é 0.

  • log_output option: você pode especificar uma das seguintes opções para o parâmetro log_output.

    • TABLE (padrão): grava consultas gerais na tabela mysql.general_log e consultas lentas na tabela mysql.slow_log.

    • FILE: grave logs de consultas gerais e lentas no sistema de arquivos.

    • NONE: desabilite o registro em log.

Para obter mais informações sobre os log de consultas gerais e de consultas lentas, acesse os seguintes tópicos na documentação do MySQL:

Log de auditoria do MySQL

Para acessar o log de auditoria, a instância de banco de dados deve usar um grupo de opções personalizado com a opção MARIADB_AUDIT_PLUGIN. Para obter mais informações, consulte Suporte ao plug-in de auditoria do MariaDB para MySQL.

Alternância e retenção de logs do RDS para MySQL

Quando o registro em log está habilitado, o Amazon RDS faz o rodízio de logs de tabelas ou exclui arquivos de log em intervalos regulares. Essa medida é uma precaução para reduzir a possibilidade de um arquivo de log grande bloquear o uso do banco de dados ou afetar o desempenho. O RDS para MySQL lida com a alternância e a exclusão da seguinte forma:

  • Os tamanhos de arquivo do log de consultas lentas, do log de erros e do log geral do MySQL são restritos a não mais de 2% do espaço de armazenamento alocado para uma instância de banco de dados. Para manter esse limite, os logs são alternados automaticamente a cada hora. O MySQL remove arquivos de log criados há mais de duas semanas. Se o tamanho do arquivo de log combinado exceder o limite após a remoção dos arquivos de log antigos, os arquivos de log mais antigos serão excluídos até o tamanho do arquivo de log deixar de exceder esse limite.

  • Quando o registro em log FILE é ativado, os arquivos de log são examinados a cada hora e os arquivos de log com mais de duas semanas são excluídos. Em alguns casos, o tamanho do arquivo de log combinado restante após a exclusão pode exceder o limite de 2% do espaço alocado da instância de um banco de dados. Nesses casos, os arquivos de log mais antigos serão excluídos até que o tamanho do arquivo de log não exceda o limite.

  • Quando o registro de TABLE estiver ativado, em alguns casos as tabelas de log serão rotacionadas a cada 24 horas. Essa alternância ocorrerá se o espaço utilizado pelos logs de tabelas for superior a 20% do espaço de armazenamento alocado. Isso também ocorrerá se o tamanho de todos os logs combinados for superior a 10 GB. Se a quantidade de espaço usada por uma instância de banco de dados for maior que 90 por cento do espaço de armazenamento alocado da instância de banco de dados, os limites para o rodízio do log serão reduzidos. As tabelas de logs serão, então, alternadas se o espaço utilizado pelos logs de tabelas for superior a 10% do espaço de armazenamento alocado. Eles também serão alternados se o tamanho de todos os logs combinados for superior a 5 GB. Você pode assinar o evento low_free_storage para ser notificado quando tabelas de log forem rotacionadas para liberar espaço. Para obter mais informações, consulte Trabalhar com a notificação de eventos do Amazon RDS.

    Quando as tabelas de log são alternadas, a tabela de logs atual é copiada primeiro em uma tabela de logs de backup. Depois, as entradas na tabela de logs atual são removidas. Se a tabela de log de backup já existir, então ela será excluída antes que a tabela de log atual seja copiada ao backup. Você pode consultar a tabela de log de backup, se necessário. A tabela de log de backup para a tabela mysql.general_log é denominada mysql.general_log_backup. A tabela de log de backup para a tabela mysql.slow_log é denominada mysql.slow_log_backup.

    Você pode rotacionar a tabela mysql.general_log chamando o procedimento mysql.rds_rotate_general_log. Você pode rotacionar a tabela mysql.slow_log chamando o procedimento mysql.rds_rotate_slow_log.

    Os logs de tabelas são rotacionados durante um upgrade de versão do banco de dados.

Para trabalhar com os logs no console do Amazon RDS, na API do Amazon RDS, na CLI do Amazon RDS ou nos SDKs da AWS, defina o parâmetro log_output como FILE. Como o log de erros do MySQL, esses arquivos de log são rotacionados por hora. Os arquivos de log que foram gerados durante as duas semanas anteriores são retidos. Observe que o período de retenção é diferente entre o Amazon RDS e o Aurora.

Limites de tamanho em redo logs

Para o RDS para MySQL versão 8.0.32 e anterior, o valor padrão desse parâmetro é 256 MB. Esse valor é obtido multiplicando o valor padrão do parâmetro innodb_log_file_size (128 MB) pelo valor padrão do parâmetro innodb_log_files_in_group (2). Para ter mais informações, consulte Best practices for configuring parameters for Amazon RDS for MySQL, part 1: Parameters related to performance.

A partir do RDS para MySQL versão 8.0.33, o Amazon RDS usa o parâmetro innodb_redo_log_capacity em vez do innodb_log_file_size. O valor padrão do parâmetro innodb_redo_log_capacity do Amazon RDS é 2 GB. Para obter mais informações, consulte Changes in MySQL 8.0.30 (Alterações no MySQL 8.0.30) na documentação do MySQL.