MySQL

O MySQL é um sistema de gerenciamento de banco de dados relacional que funciona como um servidor que fornece acesso multiusuário a vários bancos de dados. Para mais informações, acesse mysql.com.

Pré-requisitos

Para coletar a telemetria do MySQL, instale o agente de operações versão 2.5.0 ou superior.

Configure o agente de operações para MySQL

Seguindo o guia para Configurar o agente de operações, adicione os elementos necessários para coletar registros das instâncias do MySQL e reinicie o agente.

Exemplo de configuração

O comando a seguir cria o arquivo de configuração para coletar e ingerir registros do MySQL e reiniciar o agente de operações no Linux.

sudo tee /etc/google-cloud-ops-agent/config.yaml > /dev/null << EOF
logging:
  receivers:
    mysql_error:
      type: mysql_error
    mysql_general:
      type: mysql_general
    mysql_slow:
      type: mysql_slow
  service:
    pipelines:
      mysql:
        receivers:
          - mysql_error
          - mysql_general
          - mysql_slow
EOF
sudo service google-cloud-ops-agent restart

Configurar a coleta de registros

Para ingerir registros do MySQL, é preciso criar receptores para os registros que o MySQL produz e criar um pipeline para os novos receptores.

mysql_errorPara configurar um receptor para os registros , especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_error.
include_paths [/var/log/mysqld.log, /var/log/mysql/mysqld.log, /var/log/mysql/error.log] Uma lista de caminhos do sistema de arquivos a serem lidos acompanhando cada arquivo. Um caractere curinga (*) pode ser usado nos caminhos. por exemplo, /var/log/mysql/*.log.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.


Para configurar um receptor para os registros mysql_general, especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_general.
include_paths [/var/lib/mysql/${HOSTNAME}.log] Os arquivos de registro a serem lidos.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.


Para configurar um receptor para os registros mysql_slow, especifique os seguintes campos:

Campo Padrão Descrição
type Este valor precisa ser mysql_slow.
include_paths [/var/lib/mysql/${HOSTNAME}-slow.log] Os arquivos de registro a serem lidos.
exclude_paths [] Uma lista de padrões de caminho do sistema de arquivos a serem excluídos do conjunto correspondente a include_paths.

O que é registrado

Os registros logName de mysql_error, mysql_general e mysql_slow são derivados dos IDs do receptor especificados na configuração.

Dependendo da versão do MySQL, os registros mysql_error podem conter os seguintes campos dentro do LogEntry:

Campo Tipo Descrição
jsonPayload.level string Nível de entrada de registro
jsonPayload.tid número ID da linha de execução em que o registro foi originado
jsonPayload.errorCode string Código de erro do MySQL associado ao registro
jsonPayload.subsystem string Subsistema MySQL onde o registro foi originado
jsonPayload.message string Mensagem de registro
severity string (LogSeverity) Nível de entrada de registro (traduzido)
timestamp string (Timestamp) Hora em que a solicitação foi recebida

Os campos em branco ou ausentes não serão presentes na entrada de registro.

Os registros
mysql_general contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.tid número ID da linha de execução em que o registro foi originado
jsonPayload.command string Tipo de ação do banco de dados que está sendo registrada
jsonPayload.message string Registro da ação do banco de dados
timestamp string (Timestamp) Hora em que a entrada foi registrada

Os registros
mysql_slow contêm os seguintes campos no LogEntry:

Campo Tipo Descrição
jsonPayload.user string Usuário que executou a consulta
jsonPayload.database string Banco de dados em que a consulta foi executada
jsonPayload.host string Host da instância do banco de dados
jsonPayload.ipAddress string Endereço da instância do banco de dados
jsonPayload.tid número ID da linha de execução em que a consulta foi registrada
jsonPayload.queryTime número O tempo de execução da instrução em segundos
jsonPayload.lockTime número O tempo para adquirir bloqueios em segundos
jsonPayload.rowsSent número O número de linhas enviadas para o cliente
jsonPayload.rowsExamined número O número de linhas examinadas pela camada do servidor
jsonPayload.errorNumber número O número do erro na instrução ou 0 se nenhum erro ocorreu
jsonPayload.killed número Se a instrução foi encerrada, o número do erro indicando o motivo ou 0 se ela foi encerrada normalmente
jsonPayload.bytesReceived número O número de bytes recebidos de todos os clientes
jsonPayload.bytesSent número O número de bytes enviados para todos os clientes
jsonPayload.readFirst número O número de vezes que a primeira entrada em um índice foi lida
jsonPayload.readLast número O número de solicitações para ler a última chave em um índice
jsonPayload.readKey número O número de solicitações para ler uma linha com base em uma chave
jsonPayload.readNext número O número de solicitações para ler a próxima linha na ordem de chaves
jsonPayload.readPrev número O número de solicitações para ler a linha anterior na ordem de chaves
jsonPayload.readRnd número O número de solicitações para ler uma linha com base em uma posição fixa
jsonPayload.readRndNext número O número de solicitações para ler a próxima linha no arquivo de dados
jsonPayload.sortMergePasses número Número de passes de mesclagem que o algoritmo de classificação teve de fazer
jsonPayload.sortRangeCount número O número de classificações feitas usando intervalos
jsonPayload.sortRows número O número de linhas classificadas
jsonPayload.sortScanCount número O número de classificações que foram realizadas verificando a tabela
jsonPayload.createdTmpDiskTables número O número de tabelas temporárias em disco internas criadas pelo servidor
jsonPayload.createdTmpTables número O número de tabelas temporárias internas criadas pelo servidor
jsonPayload.startTime string Horário de início da execução da instrução
jsonPayload.endTime string O horário de término da execução da instrução
jsonPayload.message string Texto completo da consulta
timestamp string (Timestamp) Hora em que a entrada foi registrada

  Esses campos só serão fornecidos se a variável de sistema log_slow_extra estiver definida como 'ON'. Essa variável está disponível a partir do MySQL 8.0.14.

Para informações sobre esses campos, consulte a documentação do MySQL.

Verificar a configuração

Use o explorador de registros para verificar se você configurou corretamente o receptor do MySQL. Pode levar um ou dois minutos para que o agente de operações comece a coletar registros.

Para verificar se os registros são ingeridos, acesse o Explorador de registros e execute a seguinte consulta para ver os registros MySQL:

resource.type="gce_instance"
logName=("projects/PROJECT_ID/logs/mysql_error" OR "projects/PROJECT_ID/logs/mysql_general" OR "projects/PROJECT_ID/logs/mysql_slow")